@agentshouse/mdruntime 0.1.0-ca4dc698bd0c4 → 0.1.0-ca6edc1abd618

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 (224) hide show
  1. package/README.md +18 -15
  2. package/dist/adapter.d.ts +77 -41
  3. package/dist/adapter.d.ts.map +1 -1
  4. package/dist/attached-model.d.ts +5 -1
  5. package/dist/attached-model.d.ts.map +1 -1
  6. package/dist/attached-model.js +21 -4
  7. package/dist/binary.d.ts +0 -5
  8. package/dist/binary.d.ts.map +1 -1
  9. package/dist/binary.js +1 -1
  10. package/dist/bootstrap.d.ts +26 -8
  11. package/dist/bootstrap.d.ts.map +1 -1
  12. package/dist/bootstrap.js +150 -81
  13. package/dist/chain.d.ts +11 -0
  14. package/dist/chain.d.ts.map +1 -0
  15. package/dist/chain.js +64 -0
  16. package/dist/change-set.d.ts +9 -16
  17. package/dist/change-set.d.ts.map +1 -1
  18. package/dist/change-set.js +11 -88
  19. package/dist/change.d.ts +31 -1
  20. package/dist/change.d.ts.map +1 -1
  21. package/dist/change.js +10 -1
  22. package/dist/client.d.ts +15 -6
  23. package/dist/client.d.ts.map +1 -1
  24. package/dist/client.js +47 -8
  25. package/dist/collection.d.ts +6 -19
  26. package/dist/collection.d.ts.map +1 -1
  27. package/dist/collection.js +31 -289
  28. package/dist/compile.d.ts +16 -0
  29. package/dist/compile.d.ts.map +1 -0
  30. package/dist/compile.js +721 -0
  31. package/dist/connection.d.ts +25 -12
  32. package/dist/connection.d.ts.map +1 -1
  33. package/dist/connection.js +2664 -1031
  34. package/dist/conversation.d.ts +18 -3
  35. package/dist/conversation.d.ts.map +1 -1
  36. package/dist/conversation.js +346 -109
  37. package/dist/digest.d.ts +7 -0
  38. package/dist/digest.d.ts.map +1 -0
  39. package/dist/digest.js +113 -0
  40. package/dist/durability.d.ts +3 -5
  41. package/dist/durability.d.ts.map +1 -1
  42. package/dist/durability.js +5 -0
  43. package/dist/entry.d.ts +3 -1
  44. package/dist/entry.d.ts.map +1 -1
  45. package/dist/entry.js +18 -23
  46. package/dist/file.d.ts +2 -10
  47. package/dist/file.d.ts.map +1 -1
  48. package/dist/file.js +3 -120
  49. package/dist/fulltext.d.ts +27 -0
  50. package/dist/fulltext.d.ts.map +1 -0
  51. package/dist/fulltext.js +368 -0
  52. package/dist/host.d.ts +10 -8
  53. package/dist/host.d.ts.map +1 -1
  54. package/dist/host.js +95 -18
  55. package/dist/identity.d.ts +0 -1
  56. package/dist/identity.d.ts.map +1 -1
  57. package/dist/identity.js +0 -3
  58. package/dist/index.d.ts +15 -11
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +5 -1
  61. package/dist/live.d.ts +22 -0
  62. package/dist/live.d.ts.map +1 -0
  63. package/dist/live.js +123 -0
  64. package/dist/memory.d.ts +9 -4
  65. package/dist/memory.d.ts.map +1 -1
  66. package/dist/memory.js +45 -31
  67. package/dist/messages.d.ts +28 -0
  68. package/dist/messages.d.ts.map +1 -0
  69. package/dist/messages.js +90 -0
  70. package/dist/model.d.ts +3 -2
  71. package/dist/model.d.ts.map +1 -1
  72. package/dist/model.js +2 -2
  73. package/dist/name.d.ts +4 -0
  74. package/dist/name.d.ts.map +1 -0
  75. package/dist/name.js +122 -0
  76. package/dist/observation.d.ts +14 -0
  77. package/dist/observation.d.ts.map +1 -1
  78. package/dist/observation.js +93 -3
  79. package/dist/opened.d.ts +22 -0
  80. package/dist/opened.d.ts.map +1 -0
  81. package/dist/opened.js +107 -0
  82. package/dist/outcome.d.ts +34 -4
  83. package/dist/outcome.d.ts.map +1 -1
  84. package/dist/outcome.js +25 -0
  85. package/dist/overlay.d.ts +3 -5
  86. package/dist/overlay.d.ts.map +1 -1
  87. package/dist/overlay.js +95 -156
  88. package/dist/query.d.ts +33 -2
  89. package/dist/query.d.ts.map +1 -1
  90. package/dist/query.js +48 -7
  91. package/dist/reach.d.ts +6 -5
  92. package/dist/reach.d.ts.map +1 -1
  93. package/dist/reach.js +170 -62
  94. package/dist/react.d.ts +3 -3
  95. package/dist/react.d.ts.map +1 -1
  96. package/dist/react.js +7 -17
  97. package/dist/readiness.d.ts +20 -9
  98. package/dist/readiness.d.ts.map +1 -1
  99. package/dist/readiness.js +6 -6
  100. package/dist/reads.d.ts +11 -0
  101. package/dist/reads.d.ts.map +1 -0
  102. package/dist/reads.js +100 -0
  103. package/dist/recovery.d.ts +2 -2
  104. package/dist/recovery.d.ts.map +1 -1
  105. package/dist/recovery.js +8 -7
  106. package/dist/refresh.d.ts +16 -15
  107. package/dist/refresh.d.ts.map +1 -1
  108. package/dist/refresh.js +113 -50
  109. package/dist/replica.d.ts +56 -33
  110. package/dist/replica.d.ts.map +1 -1
  111. package/dist/replica.js +297 -179
  112. package/dist/room-draft.d.ts +17 -2
  113. package/dist/room-draft.d.ts.map +1 -1
  114. package/dist/room-draft.js +65 -25
  115. package/dist/rows.d.ts +29 -29
  116. package/dist/rows.d.ts.map +1 -1
  117. package/dist/rows.js +113 -62
  118. package/dist/save.d.ts +51 -14
  119. package/dist/save.d.ts.map +1 -1
  120. package/dist/save.js +518 -180
  121. package/dist/search.d.ts +32 -43
  122. package/dist/search.d.ts.map +1 -1
  123. package/dist/search.js +37 -168
  124. package/dist/seed.d.ts +16 -0
  125. package/dist/seed.d.ts.map +1 -0
  126. package/dist/seed.js +75 -0
  127. package/dist/shared.d.ts +8 -3
  128. package/dist/shared.d.ts.map +1 -1
  129. package/dist/shared.js +129 -66
  130. package/dist/store.d.ts +98 -89
  131. package/dist/store.d.ts.map +1 -1
  132. package/dist/store.js +337 -655
  133. package/dist/stored.d.ts +145 -0
  134. package/dist/stored.d.ts.map +1 -0
  135. package/dist/stored.js +567 -0
  136. package/dist/tables.d.ts +354 -0
  137. package/dist/tables.d.ts.map +1 -0
  138. package/dist/tables.js +624 -0
  139. package/dist/turn.d.ts +5 -3
  140. package/dist/turn.d.ts.map +1 -1
  141. package/dist/turn.js +51 -21
  142. package/dist/validation.d.ts +30 -0
  143. package/dist/validation.d.ts.map +1 -0
  144. package/dist/validation.js +162 -0
  145. package/dist/windows.d.ts +22 -0
  146. package/dist/windows.d.ts.map +1 -0
  147. package/dist/windows.js +89 -0
  148. package/dist/wire.d.ts +163 -33
  149. package/dist/wire.d.ts.map +1 -1
  150. package/dist/wire.js +54 -32
  151. package/dist/words.d.ts +19 -0
  152. package/dist/words.d.ts.map +1 -0
  153. package/dist/words.js +150 -0
  154. package/package.json +18 -19
  155. package/AGENTS.md +0 -300
  156. package/dist/acquisition.d.ts +0 -14
  157. package/dist/acquisition.d.ts.map +0 -1
  158. package/dist/acquisition.js +0 -24
  159. package/dist/chat/acts.d.ts +0 -33
  160. package/dist/chat/acts.d.ts.map +0 -1
  161. package/dist/chat/acts.js +0 -36
  162. package/dist/chat/context.d.ts +0 -3
  163. package/dist/chat/context.d.ts.map +0 -1
  164. package/dist/chat/context.js +0 -10
  165. package/dist/chat/input.d.ts +0 -9
  166. package/dist/chat/input.d.ts.map +0 -1
  167. package/dist/chat/input.js +0 -99
  168. package/dist/chat/kit.d.ts +0 -60
  169. package/dist/chat/kit.d.ts.map +0 -1
  170. package/dist/chat/kit.js +0 -123
  171. package/dist/chat/lasting.d.ts +0 -6
  172. package/dist/chat/lasting.d.ts.map +0 -1
  173. package/dist/chat/lasting.js +0 -19
  174. package/dist/chat/list.d.ts +0 -26
  175. package/dist/chat/list.d.ts.map +0 -1
  176. package/dist/chat/list.js +0 -62
  177. package/dist/chat/markdown.d.ts +0 -20
  178. package/dist/chat/markdown.d.ts.map +0 -1
  179. package/dist/chat/markdown.js +0 -188
  180. package/dist/chat/message.d.ts +0 -6
  181. package/dist/chat/message.d.ts.map +0 -1
  182. package/dist/chat/message.js +0 -192
  183. package/dist/chat/messages.d.ts +0 -21
  184. package/dist/chat/messages.d.ts.map +0 -1
  185. package/dist/chat/messages.js +0 -151
  186. package/dist/chat/name.d.ts +0 -6
  187. package/dist/chat/name.d.ts.map +0 -1
  188. package/dist/chat/name.js +0 -37
  189. package/dist/chat/opened.d.ts +0 -11
  190. package/dist/chat/opened.d.ts.map +0 -1
  191. package/dist/chat/opened.js +0 -17
  192. package/dist/chat/overlay.d.ts +0 -31
  193. package/dist/chat/overlay.d.ts.map +0 -1
  194. package/dist/chat/overlay.js +0 -97
  195. package/dist/chat/parts.d.ts +0 -57
  196. package/dist/chat/parts.d.ts.map +0 -1
  197. package/dist/chat/parts.js +0 -119
  198. package/dist/chat/process.d.ts +0 -20
  199. package/dist/chat/process.d.ts.map +0 -1
  200. package/dist/chat/process.js +0 -32
  201. package/dist/chat/provider.d.ts +0 -63
  202. package/dist/chat/provider.d.ts.map +0 -1
  203. package/dist/chat/provider.js +0 -620
  204. package/dist/chat/question.d.ts +0 -9
  205. package/dist/chat/question.d.ts.map +0 -1
  206. package/dist/chat/question.js +0 -80
  207. package/dist/chat/questions.d.ts +0 -31
  208. package/dist/chat/questions.d.ts.map +0 -1
  209. package/dist/chat/questions.js +0 -111
  210. package/dist/chat/read.d.ts +0 -5
  211. package/dist/chat/read.d.ts.map +0 -1
  212. package/dist/chat/read.js +0 -13
  213. package/dist/chat/ready.d.ts +0 -33
  214. package/dist/chat/ready.d.ts.map +0 -1
  215. package/dist/chat/ready.js +0 -91
  216. package/dist/chat/style.d.ts +0 -4
  217. package/dist/chat/style.d.ts.map +0 -1
  218. package/dist/chat/style.js +0 -302
  219. package/dist/chat.d.ts +0 -14
  220. package/dist/chat.d.ts.map +0 -1
  221. package/dist/chat.js +0 -8
  222. package/dist/read-side.d.ts +0 -25
  223. package/dist/read-side.d.ts.map +0 -1
  224. package/dist/read-side.js +0 -639
@@ -0,0 +1,368 @@
1
+ import { parse } from '@agentshouse/mdmodel';
2
+ import { selected } from './compile.js';
3
+ import { markdownPath } from './rows.js';
4
+ import { indexed, matchClauses, matched, matchExpression, queryTerms, snippet, } from './words.js';
5
+ const TOKENIZER = "porter unicode61 remove_diacritics 2 categories 'L* N* Co M*'";
6
+ const CONTENTLESS = `content='', contentless_delete=1, detail=full, tokenize="${TOKENIZER}"`;
7
+ const DOCUMENTS = 'replica_search';
8
+ const MESSAGES = 'conversation_search';
9
+ export const SEARCH_TABLES = [
10
+ `CREATE VIRTUAL TABLE ${DOCUMENTS} USING fts5(path, fields, sections, preamble, ${CONTENTLESS})`,
11
+ `CREATE VIRTUAL TABLE ${MESSAGES} USING fts5(text, ${CONTENTLESS})`,
12
+ ];
13
+ const CHUNKS = 4096;
14
+ const CHUNK_CHARACTERS = 32_768;
15
+ const CANDIDATES = 5_000;
16
+ const LEAST_WINDOW = 32;
17
+ const SNIPPET_REACH = 80;
18
+ function scalars(value) {
19
+ if (value === null || value === undefined)
20
+ return [];
21
+ if (Array.isArray(value))
22
+ return value.flatMap(scalars);
23
+ if (typeof value === 'object')
24
+ return Object.values(value).flatMap(scalars);
25
+ return [String(value)];
26
+ }
27
+ function partsOf(path, content) {
28
+ if (!markdownPath(path))
29
+ return null;
30
+ const read = parse(content, path);
31
+ if (!read.ok)
32
+ return null;
33
+ return {
34
+ fields: scalars(read.document.fields).join('\n'),
35
+ sections: Object.entries(read.document.sections)
36
+ .map(([heading, text]) => `${heading}\n${text}`)
37
+ .join('\n'),
38
+ preamble: read.document.preamble,
39
+ path,
40
+ };
41
+ }
42
+ function chunked(text) {
43
+ const chunks = [];
44
+ let start = 0;
45
+ do {
46
+ let end = Math.min(text.length, start + CHUNK_CHARACTERS);
47
+ if (end < text.length) {
48
+ const space = text.lastIndexOf(' ', end);
49
+ if (space > start + CHUNK_CHARACTERS / 2)
50
+ end = space;
51
+ else if (/[\ud800-\udbff]/u.test(text[end - 1]))
52
+ end -= 1;
53
+ }
54
+ chunks.push(text.slice(start, end));
55
+ start = end;
56
+ } while (start < text.length && chunks.length < CHUNKS);
57
+ return chunks;
58
+ }
59
+ function rowOf(id, chunk) {
60
+ return id * CHUNKS + chunk;
61
+ }
62
+ export function indexDocument(connection, id, path, content) {
63
+ const parts = partsOf(path, content);
64
+ if (parts === null)
65
+ return;
66
+ chunked(parts.sections).forEach((sections, chunk) => {
67
+ const head = chunk === 0;
68
+ connection.run(`INSERT INTO ${DOCUMENTS} (rowid, path, fields, sections, preamble) VALUES (?, ?, ?, ?, ?)`, [
69
+ rowOf(id, chunk),
70
+ head ? indexed(parts.path) : null,
71
+ head ? indexed(parts.fields) : null,
72
+ indexed(sections),
73
+ head ? indexed(parts.preamble) : null,
74
+ ]);
75
+ });
76
+ }
77
+ export function indexMessage(connection, id, text) {
78
+ chunked(text).forEach((chunk, at) => {
79
+ connection.run(`INSERT INTO ${MESSAGES} (rowid, text) VALUES (?, ?)`, [
80
+ rowOf(id, at),
81
+ indexed(chunk),
82
+ ]);
83
+ });
84
+ }
85
+ function unindexed(connection, table, ids) {
86
+ for (const id of ids) {
87
+ connection.run(`DELETE FROM ${table} WHERE rowid >= ? AND rowid < ?`, [
88
+ rowOf(id, 0),
89
+ rowOf(id + 1, 0),
90
+ ]);
91
+ }
92
+ }
93
+ export function unindexDocuments(connection, ids) {
94
+ unindexed(connection, DOCUMENTS, ids);
95
+ }
96
+ export function unindexMessages(connection, ids) {
97
+ unindexed(connection, MESSAGES, ids);
98
+ }
99
+ export function unindexAll(connection) {
100
+ for (const table of [DOCUMENTS, MESSAGES]) {
101
+ connection.run(`INSERT INTO ${table} (${table}) VALUES ('delete-all')`);
102
+ }
103
+ }
104
+ function pair(left, right) {
105
+ if (left[0] !== right[0])
106
+ return left[0] < right[0] ? -1 : 1;
107
+ if (left[1] !== right[1])
108
+ return left[1] < right[1] ? -1 : 1;
109
+ return 0;
110
+ }
111
+ function byRank(left, right) {
112
+ return right.score - left.score || pair(left.tie, right.tie);
113
+ }
114
+ function beyond(hit, cursor) {
115
+ if (cursor.length === 0)
116
+ return true;
117
+ return (hit.score < cursor[0] || (hit.score === cursor[0] && pair(hit.tie, [cursor[1], cursor[2]]) > 0));
118
+ }
119
+ function rankedWithin(connection, listed, sources, cursor, needed) {
120
+ const { table } = listed;
121
+ let window = Math.max(needed * 2, LEAST_WINDOW);
122
+ for (;;) {
123
+ const rows = [];
124
+ const boundaries = [];
125
+ for (const source of sources) {
126
+ const found = connection.rows(`SELECT rowid, bm25(${table}) AS score FROM ${table} WHERE ${table} MATCH ? ${source.sql} ORDER BY score, rowid LIMIT ?`, [source.expression, ...source.bind, window]);
127
+ for (const row of found)
128
+ rows.push([Number(row.rowid), Number(row.score)]);
129
+ if (found.length === window)
130
+ boundaries.push(-Number(found.at(-1).score));
131
+ }
132
+ rows.sort((left, right) => left[1] - right[1] || left[0] - right[0]);
133
+ const best = new Map();
134
+ for (const [row, score] of rows) {
135
+ const id = Math.floor(row / CHUNKS);
136
+ if (!best.has(id))
137
+ best.set(id, { chunk: row % CHUNKS, score: -score });
138
+ }
139
+ const ties = listed.ties([...best.keys()]);
140
+ const kept = [...best]
141
+ .flatMap(([id, held]) => {
142
+ const tie = ties.get(id);
143
+ return tie === undefined ? [] : [{ id, ...held, tie }];
144
+ })
145
+ .sort(byRank)
146
+ .filter((hit) => beyond(hit, cursor))
147
+ .slice(0, needed);
148
+ const last = kept.at(-1);
149
+ if (boundaries.length === 0)
150
+ return kept;
151
+ if (kept.length === needed &&
152
+ last !== undefined &&
153
+ boundaries.every((boundary) => boundary < last.score)) {
154
+ return kept;
155
+ }
156
+ window *= 4;
157
+ }
158
+ }
159
+ function reaches(connection, listed, expression, reach) {
160
+ const { table, scope } = listed;
161
+ const [counted] = connection.rows(`SELECT count(*) AS held FROM (SELECT rowid FROM ${table} WHERE ${table} MATCH ? AND ${scope.sql} LIMIT ?)`, [expression, ...scope.bind, reach + 1]);
162
+ return Number(counted?.held ?? 0) > reach;
163
+ }
164
+ function candidates(connection, listed, clauses, cursor, needed) {
165
+ const { table, scope } = listed;
166
+ const expression = matchExpression(clauses);
167
+ const within = { sql: `AND ${scope.sql}`, bind: scope.bind };
168
+ let reach = CANDIDATES;
169
+ for (;;) {
170
+ const [edge] = connection.rows(`SELECT rowid FROM ${table} WHERE ${table} MATCH ? ${within.sql} ORDER BY rowid LIMIT 1 OFFSET ?`, [expression, ...within.bind, reach]);
171
+ const floor = edge === undefined ? null : Number(edge.rowid);
172
+ const sources = [
173
+ floor === null
174
+ ? { expression, ...within }
175
+ : { expression, sql: `${within.sql} AND rowid < ?`, bind: [...within.bind, floor] },
176
+ ];
177
+ if (floor !== null) {
178
+ const common = new Set();
179
+ const selective = [];
180
+ const frequent = [];
181
+ for (const clause of clauses) {
182
+ if (clause.kind === 'phrase')
183
+ continue;
184
+ if (clause.kind !== 'term' && common.has(clause.term)) {
185
+ frequent.push(clause);
186
+ continue;
187
+ }
188
+ if (reaches(connection, listed, clause.text, reach)) {
189
+ if (clause.kind === 'term')
190
+ common.add(clause.term);
191
+ frequent.push(clause);
192
+ }
193
+ else
194
+ selective.push(clause);
195
+ }
196
+ const phrase = clauses.find((clause) => clause.kind === 'phrase');
197
+ if (phrase !== undefined) {
198
+ const rare = !clauses
199
+ .filter((clause) => clause.kind === 'term')
200
+ .every((clause) => common.has(clause.term)) ||
201
+ !reaches(connection, listed, phrase.text, reach);
202
+ (rare ? selective : frequent).push(phrase);
203
+ }
204
+ if (selective.length > 0) {
205
+ const chosen = `(${matchExpression(selective)})`;
206
+ const tail = { sql: `${within.sql} AND rowid >= ?`, bind: [...within.bind, floor] };
207
+ if (frequent.length === 0)
208
+ sources.push({ ...tail, expression: chosen });
209
+ else {
210
+ const rest = `(${matchExpression(frequent)})`;
211
+ sources.push({ ...tail, expression: `${chosen} AND ${rest}` }, { ...tail, expression: `${chosen} NOT ${rest}` });
212
+ }
213
+ }
214
+ }
215
+ const kept = rankedWithin(connection, listed, sources, cursor, needed);
216
+ if (floor === null || kept.length >= needed)
217
+ return kept;
218
+ reach *= 4;
219
+ }
220
+ }
221
+ function windowOf(connection, listed, clauses, cursor, limit) {
222
+ if (cursor === null || listed === null || clauses === null)
223
+ return { kept: [], cursor: null };
224
+ const found = candidates(connection, listed, clauses, cursor, limit + 1);
225
+ if (found.length <= limit)
226
+ return { kept: found, cursor: null };
227
+ const kept = found.slice(0, limit);
228
+ const last = kept.at(-1);
229
+ return { kept, cursor: last === undefined ? cursor : [last.score, ...last.tie] };
230
+ }
231
+ function totalOf(connection, listed, clauses) {
232
+ if (listed === null || clauses === null)
233
+ return 0;
234
+ const { table, scope } = listed;
235
+ const [counted] = connection.rows(`SELECT count(DISTINCT rowid / ${CHUNKS}) AS held FROM ${table} WHERE ${table} MATCH ? AND ${scope.sql}`, [matchExpression(clauses), ...scope.bind]);
236
+ return Number(counted?.held ?? 0);
237
+ }
238
+ function ids(found) {
239
+ return JSON.stringify(found);
240
+ }
241
+ function documentsListed(connection, documents) {
242
+ if (documents.rooms.length === 0)
243
+ return null;
244
+ const filter = selected(connection, documents.plan, documents.rooms);
245
+ const outside = documents.beneath.flatMap(({ key, roots }) => roots.map((root) => ({
246
+ sql: 'NOT (d.key = ? AND (d.path = ? OR (d.path >= ? AND d.path < ?)))',
247
+ bind: [key, root, `${root}/`, `${root}0`],
248
+ })));
249
+ const conditions = [filter, ...outside];
250
+ const locators = new Map(documents.rooms.map(({ key, locator }) => [key, locator]));
251
+ return {
252
+ table: DOCUMENTS,
253
+ scope: {
254
+ sql: `EXISTS (SELECT 1 FROM replica_entries d WHERE d.id = ${DOCUMENTS}.rowid / ${CHUNKS} AND d.type IS NOT NULL AND ${conditions.map(({ sql }) => `(${sql})`).join(' AND ')})`,
255
+ bind: conditions.flatMap(({ bind }) => bind),
256
+ },
257
+ ties(found) {
258
+ const tied = new Map();
259
+ for (const row of connection.rows('SELECT id, key, path FROM replica_entries WHERE id IN (SELECT value FROM json_each(?))', [ids(found)])) {
260
+ const locator = locators.get(Number(row.key));
261
+ if (locator !== undefined)
262
+ tied.set(Number(row.id), [locator, String(row.path)]);
263
+ }
264
+ return tied;
265
+ },
266
+ };
267
+ }
268
+ function messagesListed(connection, conversations) {
269
+ if (conversations.length === 0)
270
+ return null;
271
+ return {
272
+ table: MESSAGES,
273
+ scope: {
274
+ sql: `EXISTS (SELECT 1 FROM conversation_messages m WHERE m.id = ${MESSAGES}.rowid / ${CHUNKS} AND m.conversation IN (SELECT value FROM json_each(?)))`,
275
+ bind: [JSON.stringify(conversations)],
276
+ },
277
+ ties(found) {
278
+ return new Map(connection
279
+ .rows('SELECT id, conversation, identity FROM conversation_messages WHERE id IN (SELECT value FROM json_each(?))', [ids(found)])
280
+ .map((row) => [Number(row.id), [String(row.conversation), String(row.identity)]]));
281
+ },
282
+ };
283
+ }
284
+ function cut(candidates, terms) {
285
+ for (const [part, text] of candidates) {
286
+ const found = snippet(text, terms, SNIPPET_REACH);
287
+ if (found !== null)
288
+ return { snippet: { part, text: found.text, at: [...found.at] } };
289
+ }
290
+ return {};
291
+ }
292
+ function documentHit(connection, hit, terms) {
293
+ const [row] = connection.rows('SELECT type, content FROM replica_entries WHERE id = ?', [hit.id]);
294
+ if (row === undefined)
295
+ return null;
296
+ const [room, path] = hit.tie;
297
+ const parts = typeof row.content === 'string' ? partsOf(path, row.content) : null;
298
+ const whole = parts === null
299
+ ? []
300
+ : [
301
+ ['fields', parts.fields],
302
+ ['sections', parts.sections],
303
+ ['preamble', parts.preamble],
304
+ ['path', parts.path],
305
+ ];
306
+ const matches = {};
307
+ for (const [part, text] of whole) {
308
+ for (const term of matched(text, terms))
309
+ (matches[term] ??= []).push(part);
310
+ }
311
+ const sections = parts === null ? [] : chunked(parts.sections);
312
+ const chunk = parts === null
313
+ ? []
314
+ : hit.chunk === 0
315
+ ? [
316
+ ['fields', parts.fields],
317
+ ['sections', sections[0] ?? ''],
318
+ ['preamble', parts.preamble],
319
+ ['path', parts.path],
320
+ ]
321
+ : [['sections', sections[hit.chunk] ?? '']];
322
+ return {
323
+ room,
324
+ path,
325
+ type: String(row.type),
326
+ score: hit.score,
327
+ matches,
328
+ ...cut(chunk, terms),
329
+ };
330
+ }
331
+ function messageHit(connection, hit, terms) {
332
+ const [row] = connection.rows('SELECT text FROM conversation_messages WHERE id = ?', [hit.id]);
333
+ const text = typeof row?.text === 'string' ? row.text : '';
334
+ const matches = {};
335
+ for (const term of matched(text, terms))
336
+ matches[term] = ['text'];
337
+ const [conversation, identity] = hit.tie;
338
+ return {
339
+ conversation,
340
+ identity,
341
+ score: hit.score,
342
+ matches,
343
+ ...cut([['text', chunked(text)[hit.chunk] ?? '']], terms),
344
+ };
345
+ }
346
+ export function searched(connection, ask) {
347
+ const clauses = matchClauses(ask.text);
348
+ const terms = queryTerms(ask.text);
349
+ const documents = ask.documents === null ? null : documentsListed(connection, ask.documents);
350
+ const messages = messagesListed(connection, ask.conversations);
351
+ const [documentsAfter, messagesAfter] = ask.after ?? [[], []];
352
+ const documentWindow = windowOf(connection, documents, clauses, documentsAfter, ask.limit);
353
+ const messageWindow = windowOf(connection, messages, clauses, messagesAfter, ask.limit);
354
+ const more = documentWindow.cursor !== null || messageWindow.cursor !== null;
355
+ return {
356
+ documents: documentWindow.kept.flatMap((hit) => documentHit(connection, hit, terms) ?? []),
357
+ messages: messageWindow.kept.map((hit) => messageHit(connection, hit, terms)),
358
+ ...(more ? { next: JSON.stringify([documentWindow.cursor, messageWindow.cursor]) } : {}),
359
+ ...(ask.total
360
+ ? {
361
+ total: {
362
+ documents: totalOf(connection, documents, clauses),
363
+ messages: totalOf(connection, messages, clauses),
364
+ },
365
+ }
366
+ : {}),
367
+ };
368
+ }
package/dist/host.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { type MdRuntimeOptions } from './connection.js';
2
- import type { RuntimeDemand } from './acquisition.js';
3
2
  import type { PortReach } from './reach.js';
4
- import type { CapacityCause, CodeAvailability, Persistence, Readiness } from './readiness.js';
3
+ import type { CodeAvailability, Persistence, Readiness, SearchObligation, Space } from './readiness.js';
4
+ import type { EntrySeed } from './seed.js';
5
5
  import { type RuntimePort } from './wire.js';
6
6
  export type MdRuntimeHostOptions = MdRuntimeOptions & {
7
7
  deploymentFacts?: unknown;
@@ -10,21 +10,23 @@ export type AttachedPort = {
10
10
  detach(): void;
11
11
  narrow(reach: PortReach): void;
12
12
  readiness(deliver: (readiness: Readiness) => void): () => void;
13
- code(code: CodeAvailability, capacity: CapacityCause | null): void;
13
+ answered(queries: readonly unknown[], done: () => void): void;
14
+ code(code: CodeAvailability, space: Space | null): void;
15
+ search(search: SearchObligation): void;
14
16
  };
15
17
  export type MdRuntimeHost = {
16
- attach(port: RuntimePort, app: string, release?: string, reach?: PortReach, code?: CodeAvailability): AttachedPort;
17
- acquire(demand: RuntimeDemand): void;
18
+ attach(port: RuntimePort, app: string, release?: string, reach?: PortReach, code?: CodeAvailability, search?: SearchObligation): AttachedPort;
19
+ seed(entry: EntrySeed): void;
18
20
  persisted(answer: Persistence): void;
21
+ shown(onScreen: boolean): void;
19
22
  endAuthorization(holder?: string): Promise<void>;
20
23
  lose(locators: readonly string[]): Promise<void>;
21
24
  stop(): Promise<void>;
22
25
  };
23
26
  export declare function serveMdRuntime(options: MdRuntimeHostOptions): MdRuntimeHost;
24
- export type { RuntimeDemand } from './acquisition.js';
27
+ export { entrySeedOf, type EntrySeed } from './seed.js';
25
28
  export type { PortReach, ReachedDocument } from './reach.js';
26
- export type { CapacityCause, CodeAvailability, Persistence } from './readiness.js';
29
+ export type { CodeAvailability, Persistence, SearchObligation, Space } from './readiness.js';
27
30
  export { createRecovery, retryDelay, type Attempt, type Attempted, type AttemptOptions, type Recovery, type RecoveryOptions, } from './recovery.js';
28
- export { AUTHORED_SCHEMA, authoredBinding, authoredBy, authoredHolder, bindAuthored, openDatabase, STORE_SCHEMA, } from './store.js';
29
31
  export type { RuntimePort } from './wire.js';
30
32
  //# sourceMappingURL=host.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAI9F,OAAO,EAGL,KAAK,WAAW,EAOjB,MAAM,WAAW,CAAC;AAInB,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,IAAI,IAAI,CAAC;IACf,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC/D,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CACJ,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,SAAS,EACjB,IAAI,CAAC,EAAE,gBAAgB,GACtB,YAAY,CAAC;IAChB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB,CAAC;AA4FF,wBAAgB,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CA4I3E;AAED,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7D,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EACL,cAAc,EACd,UAAU,EACV,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,eAAe,EACf,eAAe,EACf,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,gBAAgB,EAItB,MAAM,iBAAiB,CAAC;AAIzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,KAAK,EACN,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAGL,KAAK,WAAW,EAOjB,MAAM,WAAW,CAAC;AAInB,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,IAAI,IAAI,CAAC;IACf,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC/D,QAAQ,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC9D,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;IACxD,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CACJ,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,SAAS,EACjB,IAAI,CAAC,EAAE,gBAAgB,EACvB,MAAM,CAAC,EAAE,gBAAgB,GACxB,YAAY,CAAC;IAChB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,KAAK,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB,CAAC;AAgIF,wBAAgB,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAuL3E;AAED,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7D,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EACL,cAAc,EACd,UAAU,EACV,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
package/dist/host.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { composeRuntime, } from './connection.js';
2
+ import { queryKey } from './query.js';
2
3
  import { described } from './failure.js';
3
- import { removeRuntimeStore } from './store.js';
4
- import { AUTHORIZATION_ENDED, request, WIRE_REACH, } from './wire.js';
4
+ import { AUTHORIZATION_ENDED, request, WIRE, } from './wire.js';
5
5
  const NARROWED = new Set(['within', 'whole']);
6
6
  function answered(md, app, writtenBy, member, input) {
7
7
  switch (member) {
@@ -15,18 +15,26 @@ function answered(md, app, writtenBy, member, input) {
15
15
  return md.types(input[0]);
16
16
  case 'save':
17
17
  return md.save(input[0], input[1], writtenBy);
18
+ case 'saveParts':
19
+ return md.saveParts(input[0], input[1], writtenBy);
18
20
  case 'history':
19
21
  return md.history(input[0], input[1], input[2]);
22
+ case 'resolve':
23
+ return md.resolve(input[0], input[1], input[2]);
20
24
  case 'binaryFile.read':
21
25
  return md.binaryFile.read(input[0], input[1], input[2]);
22
- case 'binaryFile.readReference':
23
- return md.binaryFile.readReference(input[0]);
26
+ case 'binaryFile.link':
27
+ return md.binaryFile.link(input[0], input[1], input[2]);
28
+ case 'binaryFile.part':
29
+ return md.binaryFile.part(input[0], input[1]);
24
30
  case 'call':
25
31
  return md.call(input[0], input[1]);
26
32
  case 'reached':
27
33
  return md.reached(input[0], input[1], input[2]);
28
34
  case 'log':
29
35
  return md.log();
36
+ case 'cleanUp':
37
+ return md.cleanUp();
30
38
  case 'persistence':
31
39
  return md.persistence();
32
40
  case 'retry':
@@ -38,13 +46,15 @@ function answered(md, app, writtenBy, member, input) {
38
46
  case 'roomDraft.read':
39
47
  return md.roomDraft.read(input[0], input[1]);
40
48
  case 'roomDraft.write':
41
- return md.roomDraft.write(input[0], input[1], input[2], input[3]);
49
+ return md.roomDraft.write(input[0], input[1], input[2], input[3], input[4]);
42
50
  case 'roomDraft.discard':
43
51
  return md.roomDraft.discard(input[0], input[1], input[2]);
44
52
  case 'presentation.read':
45
53
  return md.presentation.read(app);
46
54
  case 'presentation.write':
47
55
  return md.presentation.write(app, input[0]);
56
+ case 'presentation.edit':
57
+ return md.presentation.edit(app, input[0]);
48
58
  case 'conversation.list':
49
59
  return md.conversation.list();
50
60
  case 'conversation.read':
@@ -53,6 +63,8 @@ function answered(md, app, writtenBy, member, input) {
53
63
  return md.conversation.create(input[0]);
54
64
  case 'conversation.send':
55
65
  return md.conversation.send(input[0], input[1], input[2]);
66
+ case 'conversation.attach':
67
+ return md.conversation.attach(input[0], input[1]);
56
68
  case 'conversation.answer':
57
69
  return md.conversation.answer(input[0], input[1]);
58
70
  case 'conversation.interrupt':
@@ -65,10 +77,28 @@ function answered(md, app, writtenBy, member, input) {
65
77
  return md.conversation.delete(input[0]);
66
78
  case 'chatDraft.write':
67
79
  return md.chatDraft.write(input[0], input[1], input[2]);
80
+ case 'chatDraft.prepend':
81
+ return md.chatDraft.prepend(input[0], input[1]);
68
82
  case 'chatDraft.discard':
69
83
  return md.chatDraft.discard(input[0]);
70
84
  }
71
85
  }
86
+ function attempted(work) {
87
+ try {
88
+ return Promise.resolve(work());
89
+ }
90
+ catch (error) {
91
+ return Promise.reject(error);
92
+ }
93
+ }
94
+ function answeredResult(value) {
95
+ return typeof value === 'object' && value !== null && !('pending' in value);
96
+ }
97
+ function answeredMessage(value) {
98
+ if (typeof value !== 'object' || value === null)
99
+ return false;
100
+ return !('result' in value) || answeredResult(value.result);
101
+ }
72
102
  export function serveMdRuntime(options) {
73
103
  const deploymentFacts = structuredClone(options.deploymentFacts);
74
104
  const closing = new AbortController();
@@ -86,14 +116,25 @@ export function serveMdRuntime(options) {
86
116
  deliver(structuredClone(deploymentFacts));
87
117
  return () => { };
88
118
  };
89
- function attach(port, app, release, reach, code = 'stored') {
119
+ function attach(port, app, release, reach, code = 'stored', search = 'unused') {
90
120
  if (!authorized)
91
121
  throw new Error(AUTHORIZATION_ENDED);
92
122
  const writtenBy = release === undefined ? undefined : { app, release };
93
- const view = runtime.within(reach ?? null, { target: app, code, capacity: null });
123
+ let facts = { target: app, code, space: null, search };
124
+ const view = runtime.within(reach ?? null, facts);
94
125
  const observations = new Map();
95
126
  const followed = new Set();
127
+ const answeredKeys = new Set();
128
+ let awaited = null;
96
129
  let serving = true;
130
+ const answeredQuery = (query) => {
131
+ answeredKeys.add(queryKey(query));
132
+ if (awaited === null || !awaited.keys.every((key) => answeredKeys.has(key)))
133
+ return;
134
+ const { done } = awaited;
135
+ awaited = null;
136
+ done();
137
+ };
97
138
  const send = (message) => {
98
139
  port.postMessage(message);
99
140
  };
@@ -115,10 +156,26 @@ export function serveMdRuntime(options) {
115
156
  return;
116
157
  send(resolved ? { kind: 'event', id, value } : { kind: 'result', id, value });
117
158
  resolved = true;
159
+ if (topic === 'query' && answeredMessage(value))
160
+ answeredQuery(input[0]);
118
161
  };
119
162
  observations.set(id, topic === 'deployment-facts'
120
163
  ? watchFacts(deliver)
121
- : (NARROWED.has(WIRE_REACH.topics[topic]) ? view : runtime).watch(topic, topic === 'presentation' ? [app] : input, deliver));
164
+ : (NARROWED.has(WIRE.topics[topic]) ? view : runtime).watch(topic, topic === 'presentation' ? [app] : input, deliver));
165
+ };
166
+ const reply = async (id, query, pending) => {
167
+ try {
168
+ const value = await pending;
169
+ if (!serving)
170
+ return;
171
+ send({ kind: 'result', id, value });
172
+ if (query !== undefined && answeredResult(value))
173
+ answeredQuery(query);
174
+ }
175
+ catch (error) {
176
+ if (serving)
177
+ send({ kind: 'failure', id, ...described(error) });
178
+ }
122
179
  };
123
180
  const serve = async (message) => {
124
181
  if (message.kind === 'hello')
@@ -136,14 +193,15 @@ export function serveMdRuntime(options) {
136
193
  observe(message.id, message.topic, message.input);
137
194
  return;
138
195
  }
139
- const value = await answered(NARROWED.has(WIRE_REACH.members[message.member]) ? view.md : md, app, writtenBy, message.member, message.input);
140
- if (serving)
141
- send({ kind: 'result', id: message.id, value });
142
196
  }
143
197
  catch (error) {
144
198
  if (serving)
145
199
  send({ kind: 'failure', id: message.id, ...described(error) });
200
+ return;
146
201
  }
202
+ const { id, member, input } = message;
203
+ const pending = attempted(() => answered(NARROWED.has(WIRE.members[member].reach) ? view.md : md, app, writtenBy, member, input));
204
+ return reply(id, member === 'query' ? input[0] : undefined, pending);
147
205
  };
148
206
  port.addEventListener('message', (event) => {
149
207
  if (!serving)
@@ -162,9 +220,24 @@ export function serveMdRuntime(options) {
162
220
  if (serving)
163
221
  view.narrow(next);
164
222
  },
165
- code(next, capacity) {
166
- if (serving)
167
- view.facts({ target: app, code: next, capacity });
223
+ code(next, space) {
224
+ if (!serving)
225
+ return;
226
+ facts = { ...facts, code: next, space };
227
+ view.facts(facts);
228
+ },
229
+ search(next) {
230
+ if (!serving)
231
+ return;
232
+ facts = { ...facts, search: next };
233
+ view.facts(facts);
234
+ },
235
+ answered(queries, done) {
236
+ const keys = queries.map(queryKey);
237
+ if (keys.every((key) => answeredKeys.has(key)))
238
+ done();
239
+ else
240
+ awaited = { keys, done };
168
241
  },
169
242
  readiness(deliver) {
170
243
  if (!serving)
@@ -184,12 +257,15 @@ export function serveMdRuntime(options) {
184
257
  }
185
258
  return {
186
259
  attach,
187
- acquire(demand) {
188
- runtime.acquire(demand);
260
+ seed(entry) {
261
+ runtime.seed(entry);
189
262
  },
190
263
  persisted(answer) {
191
264
  runtime.persisted(answer);
192
265
  },
266
+ shown(onScreen) {
267
+ runtime.shown(onScreen);
268
+ },
193
269
  async endAuthorization(holder) {
194
270
  authorized = false;
195
271
  for (const [detach, send] of [...attachments]) {
@@ -197,8 +273,9 @@ export function serveMdRuntime(options) {
197
273
  detach();
198
274
  }
199
275
  close();
200
- if (!(await removeRuntimeStore(holder)))
276
+ if (!(await options.database.ask({ kind: 'authored.end', holder: holder ?? null }))) {
201
277
  await options.shell.dropGeneration();
278
+ }
202
279
  },
203
280
  lose(locators) {
204
281
  return runtime.lose(locators);
@@ -208,5 +285,5 @@ export function serveMdRuntime(options) {
208
285
  },
209
286
  };
210
287
  }
288
+ export { entrySeedOf } from './seed.js';
211
289
  export { createRecovery, retryDelay, } from './recovery.js';
212
- export { AUTHORED_SCHEMA, authoredBinding, authoredBy, authoredHolder, bindAuthored, openDatabase, STORE_SCHEMA, } from './store.js';
@@ -3,6 +3,5 @@ export declare function identityTime(identity: string): number;
3
3
  export declare function roomDraftRevision(): string;
4
4
  export declare function chatDraftRevision(): string;
5
5
  export declare function transferIdentity(): string;
6
- export declare function indexGeneration(): string;
7
6
  export declare function binaryLocalId(): string;
8
7
  //# sourceMappingURL=identity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,EAAE,GAAE,MAAmB,GAAG,MAAM,CAWnE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAQD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,EAAE,GAAE,MAAmB,GAAG,MAAM,CAWnE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAQD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
package/dist/identity.js CHANGED
@@ -27,9 +27,6 @@ export function chatDraftRevision() {
27
27
  export function transferIdentity() {
28
28
  return randomIdentity();
29
29
  }
30
- export function indexGeneration() {
31
- return randomIdentity();
32
- }
33
30
  export function binaryLocalId() {
34
31
  return randomIdentity();
35
32
  }