@agentshouse/mdruntime 0.1.0-cb0eb0d87ff49 → 0.1.0-cb122f2ba154d

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 (230) hide show
  1. package/README.md +18 -15
  2. package/dist/adapter.d.ts +91 -34
  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 +38 -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 +27 -8
  11. package/dist/bootstrap.d.ts.map +1 -1
  12. package/dist/bootstrap.js +174 -98
  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 +18 -6
  23. package/dist/client.d.ts.map +1 -1
  24. package/dist/client.js +97 -10
  25. package/dist/collection.d.ts +11 -19
  26. package/dist/collection.d.ts.map +1 -1
  27. package/dist/collection.js +53 -289
  28. package/dist/compile.d.ts +16 -0
  29. package/dist/compile.d.ts.map +1 -0
  30. package/dist/compile.js +771 -0
  31. package/dist/connection.d.ts +38 -11
  32. package/dist/connection.d.ts.map +1 -1
  33. package/dist/connection.js +3134 -858
  34. package/dist/conversation.d.ts +22 -6
  35. package/dist/conversation.d.ts.map +1 -1
  36. package/dist/conversation.js +461 -131
  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 +5 -1
  41. package/dist/durability.d.ts.map +1 -1
  42. package/dist/durability.js +5 -0
  43. package/dist/entry.d.ts +4 -1
  44. package/dist/entry.d.ts.map +1 -1
  45. package/dist/entry.js +18 -23
  46. package/dist/file.d.ts +2 -19
  47. package/dist/file.d.ts.map +1 -1
  48. package/dist/file.js +7 -122
  49. package/dist/fulltext.d.ts +27 -0
  50. package/dist/fulltext.d.ts.map +1 -0
  51. package/dist/fulltext.js +370 -0
  52. package/dist/host.d.ts +12 -2
  53. package/dist/host.d.ts.map +1 -1
  54. package/dist/host.js +121 -13
  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 +13 -9
  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 +124 -0
  64. package/dist/media.d.ts +8 -0
  65. package/dist/media.d.ts.map +1 -0
  66. package/dist/media.js +208 -0
  67. package/dist/memory.d.ts +10 -4
  68. package/dist/memory.d.ts.map +1 -1
  69. package/dist/memory.js +88 -27
  70. package/dist/messages.d.ts +28 -0
  71. package/dist/messages.d.ts.map +1 -0
  72. package/dist/messages.js +90 -0
  73. package/dist/model.d.ts +9 -2
  74. package/dist/model.d.ts.map +1 -1
  75. package/dist/model.js +8 -2
  76. package/dist/name.d.ts +4 -0
  77. package/dist/name.d.ts.map +1 -0
  78. package/dist/name.js +122 -0
  79. package/dist/observation.d.ts +15 -0
  80. package/dist/observation.d.ts.map +1 -1
  81. package/dist/observation.js +93 -3
  82. package/dist/opened.d.ts +22 -0
  83. package/dist/opened.d.ts.map +1 -0
  84. package/dist/opened.js +107 -0
  85. package/dist/outcome.d.ts +45 -4
  86. package/dist/outcome.d.ts.map +1 -1
  87. package/dist/outcome.js +39 -0
  88. package/dist/overlay.d.ts +3 -5
  89. package/dist/overlay.d.ts.map +1 -1
  90. package/dist/overlay.js +95 -156
  91. package/dist/paths.d.ts +1 -0
  92. package/dist/paths.d.ts.map +1 -1
  93. package/dist/paths.js +4 -0
  94. package/dist/query.d.ts +39 -2
  95. package/dist/query.d.ts.map +1 -1
  96. package/dist/query.js +48 -7
  97. package/dist/reach.d.ts +18 -6
  98. package/dist/reach.d.ts.map +1 -1
  99. package/dist/reach.js +224 -70
  100. package/dist/react.d.ts +5 -3
  101. package/dist/react.d.ts.map +1 -1
  102. package/dist/react.js +7 -17
  103. package/dist/readiness.d.ts +63 -0
  104. package/dist/readiness.d.ts.map +1 -0
  105. package/dist/readiness.js +33 -0
  106. package/dist/reads.d.ts +11 -0
  107. package/dist/reads.d.ts.map +1 -0
  108. package/dist/reads.js +91 -0
  109. package/dist/recovery.d.ts +2 -2
  110. package/dist/recovery.d.ts.map +1 -1
  111. package/dist/recovery.js +8 -7
  112. package/dist/refresh.d.ts +16 -15
  113. package/dist/refresh.d.ts.map +1 -1
  114. package/dist/refresh.js +113 -50
  115. package/dist/replica.d.ts +56 -33
  116. package/dist/replica.d.ts.map +1 -1
  117. package/dist/replica.js +298 -179
  118. package/dist/room-draft.d.ts +34 -4
  119. package/dist/room-draft.d.ts.map +1 -1
  120. package/dist/room-draft.js +105 -31
  121. package/dist/rows.d.ts +38 -29
  122. package/dist/rows.d.ts.map +1 -1
  123. package/dist/rows.js +173 -94
  124. package/dist/save.d.ts +53 -14
  125. package/dist/save.d.ts.map +1 -1
  126. package/dist/save.js +529 -185
  127. package/dist/search.d.ts +32 -43
  128. package/dist/search.d.ts.map +1 -1
  129. package/dist/search.js +37 -170
  130. package/dist/seed.d.ts +16 -0
  131. package/dist/seed.d.ts.map +1 -0
  132. package/dist/seed.js +75 -0
  133. package/dist/shared.d.ts +8 -3
  134. package/dist/shared.d.ts.map +1 -1
  135. package/dist/shared.js +129 -66
  136. package/dist/status.d.ts +9 -0
  137. package/dist/status.d.ts.map +1 -1
  138. package/dist/status.js +3 -1
  139. package/dist/store.d.ts +100 -86
  140. package/dist/store.d.ts.map +1 -1
  141. package/dist/store.js +331 -632
  142. package/dist/stored.d.ts +135 -0
  143. package/dist/stored.d.ts.map +1 -0
  144. package/dist/stored.js +568 -0
  145. package/dist/tables.d.ts +352 -0
  146. package/dist/tables.d.ts.map +1 -0
  147. package/dist/tables.js +621 -0
  148. package/dist/turn.d.ts +5 -3
  149. package/dist/turn.d.ts.map +1 -1
  150. package/dist/turn.js +51 -21
  151. package/dist/validation.d.ts +30 -0
  152. package/dist/validation.d.ts.map +1 -0
  153. package/dist/validation.js +162 -0
  154. package/dist/windows.d.ts +22 -0
  155. package/dist/windows.d.ts.map +1 -0
  156. package/dist/windows.js +89 -0
  157. package/dist/wire.d.ts +168 -32
  158. package/dist/wire.d.ts.map +1 -1
  159. package/dist/wire.js +56 -31
  160. package/dist/words.d.ts +19 -0
  161. package/dist/words.d.ts.map +1 -0
  162. package/dist/words.js +156 -0
  163. package/package.json +18 -19
  164. package/AGENTS.md +0 -309
  165. package/dist/chat/acts.d.ts +0 -33
  166. package/dist/chat/acts.d.ts.map +0 -1
  167. package/dist/chat/acts.js +0 -36
  168. package/dist/chat/context.d.ts +0 -3
  169. package/dist/chat/context.d.ts.map +0 -1
  170. package/dist/chat/context.js +0 -10
  171. package/dist/chat/input.d.ts +0 -9
  172. package/dist/chat/input.d.ts.map +0 -1
  173. package/dist/chat/input.js +0 -99
  174. package/dist/chat/kit.d.ts +0 -60
  175. package/dist/chat/kit.d.ts.map +0 -1
  176. package/dist/chat/kit.js +0 -123
  177. package/dist/chat/lasting.d.ts +0 -6
  178. package/dist/chat/lasting.d.ts.map +0 -1
  179. package/dist/chat/lasting.js +0 -19
  180. package/dist/chat/list.d.ts +0 -26
  181. package/dist/chat/list.d.ts.map +0 -1
  182. package/dist/chat/list.js +0 -62
  183. package/dist/chat/markdown.d.ts +0 -20
  184. package/dist/chat/markdown.d.ts.map +0 -1
  185. package/dist/chat/markdown.js +0 -188
  186. package/dist/chat/message.d.ts +0 -6
  187. package/dist/chat/message.d.ts.map +0 -1
  188. package/dist/chat/message.js +0 -192
  189. package/dist/chat/messages.d.ts +0 -21
  190. package/dist/chat/messages.d.ts.map +0 -1
  191. package/dist/chat/messages.js +0 -151
  192. package/dist/chat/name.d.ts +0 -6
  193. package/dist/chat/name.d.ts.map +0 -1
  194. package/dist/chat/name.js +0 -37
  195. package/dist/chat/opened.d.ts +0 -11
  196. package/dist/chat/opened.d.ts.map +0 -1
  197. package/dist/chat/opened.js +0 -17
  198. package/dist/chat/overlay.d.ts +0 -31
  199. package/dist/chat/overlay.d.ts.map +0 -1
  200. package/dist/chat/overlay.js +0 -97
  201. package/dist/chat/parts.d.ts +0 -57
  202. package/dist/chat/parts.d.ts.map +0 -1
  203. package/dist/chat/parts.js +0 -119
  204. package/dist/chat/process.d.ts +0 -20
  205. package/dist/chat/process.d.ts.map +0 -1
  206. package/dist/chat/process.js +0 -32
  207. package/dist/chat/provider.d.ts +0 -63
  208. package/dist/chat/provider.d.ts.map +0 -1
  209. package/dist/chat/provider.js +0 -620
  210. package/dist/chat/question.d.ts +0 -9
  211. package/dist/chat/question.d.ts.map +0 -1
  212. package/dist/chat/question.js +0 -80
  213. package/dist/chat/questions.d.ts +0 -31
  214. package/dist/chat/questions.d.ts.map +0 -1
  215. package/dist/chat/questions.js +0 -111
  216. package/dist/chat/read.d.ts +0 -5
  217. package/dist/chat/read.d.ts.map +0 -1
  218. package/dist/chat/read.js +0 -13
  219. package/dist/chat/ready.d.ts +0 -33
  220. package/dist/chat/ready.d.ts.map +0 -1
  221. package/dist/chat/ready.js +0 -91
  222. package/dist/chat/style.d.ts +0 -4
  223. package/dist/chat/style.d.ts.map +0 -1
  224. package/dist/chat/style.js +0 -302
  225. package/dist/chat.d.ts +0 -14
  226. package/dist/chat.d.ts.map +0 -1
  227. package/dist/chat.js +0 -8
  228. package/dist/read-side.d.ts +0 -25
  229. package/dist/read-side.d.ts.map +0 -1
  230. package/dist/read-side.js +0 -639
@@ -0,0 +1,370 @@
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* S*' separators '$+<=>^`|~'";
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 = {
246
+ sql: "NOT EXISTS (SELECT 1 FROM json_each(?) r WHERE d.key = r.value ->> 0 AND (d.path = r.value ->> 1 OR (d.path >= (r.value ->> 1) || '/' AND d.path < (r.value ->> 1) || '0')))",
247
+ bind: [
248
+ JSON.stringify(documents.beneath.flatMap(({ key, roots }) => roots.map((root) => [key, root]))),
249
+ ],
250
+ };
251
+ const conditions = [filter, outside];
252
+ const locators = new Map(documents.rooms.map(({ key, locator }) => [key, locator]));
253
+ return {
254
+ table: DOCUMENTS,
255
+ scope: {
256
+ 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 ')})`,
257
+ bind: conditions.flatMap(({ bind }) => bind),
258
+ },
259
+ ties(found) {
260
+ const tied = new Map();
261
+ for (const row of connection.rows('SELECT id, key, path FROM replica_entries WHERE id IN (SELECT value FROM json_each(?))', [ids(found)])) {
262
+ const locator = locators.get(Number(row.key));
263
+ if (locator !== undefined)
264
+ tied.set(Number(row.id), [locator, String(row.path)]);
265
+ }
266
+ return tied;
267
+ },
268
+ };
269
+ }
270
+ function messagesListed(connection, conversations) {
271
+ if (conversations.length === 0)
272
+ return null;
273
+ return {
274
+ table: MESSAGES,
275
+ scope: {
276
+ sql: `EXISTS (SELECT 1 FROM conversation_messages m WHERE m.id = ${MESSAGES}.rowid / ${CHUNKS} AND m.conversation IN (SELECT value FROM json_each(?)))`,
277
+ bind: [JSON.stringify(conversations)],
278
+ },
279
+ ties(found) {
280
+ return new Map(connection
281
+ .rows('SELECT id, conversation, identity FROM conversation_messages WHERE id IN (SELECT value FROM json_each(?))', [ids(found)])
282
+ .map((row) => [Number(row.id), [String(row.conversation), String(row.identity)]]));
283
+ },
284
+ };
285
+ }
286
+ function cut(candidates, terms) {
287
+ for (const [part, text] of candidates) {
288
+ const found = snippet(text, terms, SNIPPET_REACH);
289
+ if (found !== null)
290
+ return { snippet: { part, text: found.text, at: [...found.at] } };
291
+ }
292
+ return {};
293
+ }
294
+ function documentHit(connection, hit, terms) {
295
+ const [row] = connection.rows('SELECT type, content FROM replica_entries WHERE id = ?', [hit.id]);
296
+ if (row === undefined)
297
+ return null;
298
+ const [room, path] = hit.tie;
299
+ const parts = typeof row.content === 'string' ? partsOf(path, row.content) : null;
300
+ const whole = parts === null
301
+ ? []
302
+ : [
303
+ ['fields', parts.fields],
304
+ ['sections', parts.sections],
305
+ ['preamble', parts.preamble],
306
+ ['path', parts.path],
307
+ ];
308
+ const matches = {};
309
+ for (const [part, text] of whole) {
310
+ for (const term of matched(text, terms))
311
+ (matches[term] ??= []).push(part);
312
+ }
313
+ const sections = parts === null ? [] : chunked(parts.sections);
314
+ const chunk = parts === null
315
+ ? []
316
+ : hit.chunk === 0
317
+ ? [
318
+ ['fields', parts.fields],
319
+ ['sections', sections[0] ?? ''],
320
+ ['preamble', parts.preamble],
321
+ ['path', parts.path],
322
+ ]
323
+ : [['sections', sections[hit.chunk] ?? '']];
324
+ return {
325
+ room,
326
+ path,
327
+ type: String(row.type),
328
+ score: hit.score,
329
+ matches,
330
+ ...cut(chunk, terms),
331
+ };
332
+ }
333
+ function messageHit(connection, hit, terms) {
334
+ const [row] = connection.rows('SELECT text FROM conversation_messages WHERE id = ?', [hit.id]);
335
+ const text = typeof row?.text === 'string' ? row.text : '';
336
+ const matches = {};
337
+ for (const term of matched(text, terms))
338
+ matches[term] = ['text'];
339
+ const [conversation, identity] = hit.tie;
340
+ return {
341
+ conversation,
342
+ identity,
343
+ score: hit.score,
344
+ matches,
345
+ ...cut([['text', chunked(text)[hit.chunk] ?? '']], terms),
346
+ };
347
+ }
348
+ export function searched(connection, ask) {
349
+ const clauses = matchClauses(ask.text);
350
+ const terms = queryTerms(ask.text);
351
+ const documents = ask.documents === null ? null : documentsListed(connection, ask.documents);
352
+ const messages = messagesListed(connection, ask.conversations);
353
+ const [documentsAfter, messagesAfter] = ask.after ?? [[], []];
354
+ const documentWindow = windowOf(connection, documents, clauses, documentsAfter, ask.limit);
355
+ const messageWindow = windowOf(connection, messages, clauses, messagesAfter, ask.limit);
356
+ const more = documentWindow.cursor !== null || messageWindow.cursor !== null;
357
+ return {
358
+ documents: documentWindow.kept.flatMap((hit) => documentHit(connection, hit, terms) ?? []),
359
+ messages: messageWindow.kept.map((hit) => messageHit(connection, hit, terms)),
360
+ ...(more ? { next: JSON.stringify([documentWindow.cursor, messageWindow.cursor]) } : {}),
361
+ ...(ask.total
362
+ ? {
363
+ total: {
364
+ documents: totalOf(connection, documents, clauses),
365
+ messages: totalOf(connection, messages, clauses),
366
+ },
367
+ }
368
+ : {}),
369
+ };
370
+ }
package/dist/host.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { type MdRuntimeOptions } from './connection.js';
2
2
  import type { PortReach } from './reach.js';
3
+ import type { CodeAvailability, Persistence, Readiness, SearchObligation, Space } from './readiness.js';
4
+ import type { EntrySeed } from './seed.js';
3
5
  import { type RuntimePort } from './wire.js';
4
6
  export type MdRuntimeHostOptions = MdRuntimeOptions & {
5
7
  deploymentFacts?: unknown;
@@ -7,16 +9,24 @@ export type MdRuntimeHostOptions = MdRuntimeOptions & {
7
9
  export type AttachedPort = {
8
10
  detach(): void;
9
11
  narrow(reach: PortReach): void;
12
+ readiness(deliver: (readiness: Readiness) => void): () => void;
13
+ answered(queries: readonly unknown[], done: () => void): void;
14
+ code(code: CodeAvailability, space: Space | null): void;
15
+ search(search: SearchObligation): void;
10
16
  };
11
17
  export type MdRuntimeHost = {
12
- attach(port: RuntimePort, app: string, release?: string, reach?: PortReach): AttachedPort;
18
+ attach(port: RuntimePort, app: string, release?: string, reach?: PortReach, code?: CodeAvailability, search?: SearchObligation): AttachedPort;
19
+ seed(entry: EntrySeed): void;
20
+ persisted(answer: Persistence): void;
21
+ shown(onScreen: boolean): void;
13
22
  endAuthorization(holder?: string): Promise<void>;
14
23
  lose(locators: readonly string[]): Promise<void>;
15
24
  stop(): Promise<void>;
16
25
  };
17
26
  export declare function serveMdRuntime(options: MdRuntimeHostOptions): MdRuntimeHost;
27
+ export { entrySeedOf, type EntrySeed } from './seed.js';
18
28
  export type { PortReach, ReachedDocument } from './reach.js';
29
+ export type { CodeAvailability, Persistence, SearchObligation, Space } from './readiness.js';
19
30
  export { createRecovery, retryDelay, type Attempt, type Attempted, type AttemptOptions, type Recovery, type RecoveryOptions, } from './recovery.js';
20
- export { AUTHORED_SCHEMA, authoredBinding, authoredBy, authoredHolder, bindAuthored, STORE_SCHEMA, } from './store.js';
21
31
  export type { RuntimePort } from './wire.js';
22
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,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C,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;CAChC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;IAC1F,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;AA0FF,wBAAgB,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAoH3E;AAED,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7D,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,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;AAGzB,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;AAsIF,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,20 +15,34 @@ 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.show':
29
+ return md.binaryFile.show(input[0], input[1], input[2]);
30
+ case 'binaryFile.attach':
31
+ return md.binaryFile.attach(input[0], input[1]);
32
+ case 'binaryFile.part':
33
+ return md.binaryFile.part(input[0], input[1]);
24
34
  case 'call':
25
35
  return md.call(input[0], input[1]);
26
36
  case 'reached':
27
37
  return md.reached(input[0], input[1], input[2]);
28
38
  case 'log':
29
39
  return md.log();
40
+ case 'cleanUp':
41
+ return md.cleanUp();
30
42
  case 'persistence':
31
43
  return md.persistence();
44
+ case 'retry':
45
+ return md.retry();
32
46
  case 'reauthorize':
33
47
  return md.reauthorize();
34
48
  case 'roomDraft.list':
@@ -36,13 +50,15 @@ function answered(md, app, writtenBy, member, input) {
36
50
  case 'roomDraft.read':
37
51
  return md.roomDraft.read(input[0], input[1]);
38
52
  case 'roomDraft.write':
39
- return md.roomDraft.write(input[0], input[1], input[2], input[3]);
53
+ return md.roomDraft.write(input[0], input[1], input[2], input[3], input[4]);
40
54
  case 'roomDraft.discard':
41
55
  return md.roomDraft.discard(input[0], input[1], input[2]);
42
56
  case 'presentation.read':
43
57
  return md.presentation.read(app);
44
58
  case 'presentation.write':
45
59
  return md.presentation.write(app, input[0]);
60
+ case 'presentation.edit':
61
+ return md.presentation.edit(app, input[0]);
46
62
  case 'conversation.list':
47
63
  return md.conversation.list();
48
64
  case 'conversation.read':
@@ -63,10 +79,28 @@ function answered(md, app, writtenBy, member, input) {
63
79
  return md.conversation.delete(input[0]);
64
80
  case 'chatDraft.write':
65
81
  return md.chatDraft.write(input[0], input[1], input[2]);
82
+ case 'chatDraft.prepend':
83
+ return md.chatDraft.prepend(input[0], input[1]);
66
84
  case 'chatDraft.discard':
67
85
  return md.chatDraft.discard(input[0]);
68
86
  }
69
87
  }
88
+ function attempted(work) {
89
+ try {
90
+ return Promise.resolve(work());
91
+ }
92
+ catch (error) {
93
+ return Promise.reject(error);
94
+ }
95
+ }
96
+ function answeredResult(value) {
97
+ return typeof value === 'object' && value !== null && !('pending' in value);
98
+ }
99
+ function answeredMessage(value) {
100
+ if (typeof value !== 'object' || value === null)
101
+ return false;
102
+ return !('result' in value) || answeredResult(value.result);
103
+ }
70
104
  export function serveMdRuntime(options) {
71
105
  const deploymentFacts = structuredClone(options.deploymentFacts);
72
106
  const closing = new AbortController();
@@ -84,13 +118,25 @@ export function serveMdRuntime(options) {
84
118
  deliver(structuredClone(deploymentFacts));
85
119
  return () => { };
86
120
  };
87
- function attach(port, app, release, reach) {
121
+ function attach(port, app, release, reach, code = 'stored', search = 'unused') {
88
122
  if (!authorized)
89
123
  throw new Error(AUTHORIZATION_ENDED);
90
124
  const writtenBy = release === undefined ? undefined : { app, release };
91
- const view = runtime.within(reach ?? null);
125
+ let facts = { target: app, code, space: null, search };
126
+ const view = runtime.within(reach ?? null, facts);
92
127
  const observations = new Map();
128
+ const followed = new Set();
129
+ const answeredKeys = new Set();
130
+ let awaited = null;
93
131
  let serving = true;
132
+ const answeredQuery = (query) => {
133
+ answeredKeys.add(queryKey(query));
134
+ if (awaited === null || !awaited.keys.every((key) => answeredKeys.has(key)))
135
+ return;
136
+ const { done } = awaited;
137
+ awaited = null;
138
+ done();
139
+ };
94
140
  const send = (message) => {
95
141
  port.postMessage(message);
96
142
  };
@@ -101,6 +147,8 @@ export function serveMdRuntime(options) {
101
147
  for (const end of observations.values())
102
148
  end();
103
149
  observations.clear();
150
+ for (const end of [...followed])
151
+ end();
104
152
  attachments.delete(detach);
105
153
  };
106
154
  const observe = (id, topic, input) => {
@@ -110,10 +158,26 @@ export function serveMdRuntime(options) {
110
158
  return;
111
159
  send(resolved ? { kind: 'event', id, value } : { kind: 'result', id, value });
112
160
  resolved = true;
161
+ if (topic === 'query' && answeredMessage(value))
162
+ answeredQuery(input[0]);
113
163
  };
114
164
  observations.set(id, topic === 'deployment-facts'
115
165
  ? watchFacts(deliver)
116
- : (NARROWED.has(WIRE_REACH.topics[topic]) ? view : runtime).watch(topic, topic === 'presentation' ? [app] : input, deliver));
166
+ : (NARROWED.has(WIRE.topics[topic]) ? view : runtime).watch(topic, topic === 'presentation' ? [app] : input, deliver));
167
+ };
168
+ const reply = async (id, query, pending) => {
169
+ try {
170
+ const value = await pending;
171
+ if (!serving)
172
+ return;
173
+ send({ kind: 'result', id, value });
174
+ if (query !== undefined && answeredResult(value))
175
+ answeredQuery(query);
176
+ }
177
+ catch (error) {
178
+ if (serving)
179
+ send({ kind: 'failure', id, ...described(error) });
180
+ }
117
181
  };
118
182
  const serve = async (message) => {
119
183
  if (message.kind === 'hello')
@@ -131,14 +195,15 @@ export function serveMdRuntime(options) {
131
195
  observe(message.id, message.topic, message.input);
132
196
  return;
133
197
  }
134
- const value = await answered(NARROWED.has(WIRE_REACH.members[message.member]) ? view.md : md, app, writtenBy, message.member, message.input);
135
- if (serving)
136
- send({ kind: 'result', id: message.id, value });
137
198
  }
138
199
  catch (error) {
139
200
  if (serving)
140
201
  send({ kind: 'failure', id: message.id, ...described(error) });
202
+ return;
141
203
  }
204
+ const { id, member, input } = message;
205
+ const pending = attempted(() => answered(NARROWED.has(WIRE.members[member].reach) ? view.md : md, app, writtenBy, member, input));
206
+ return reply(id, member === 'query' ? input[0] : undefined, pending);
142
207
  };
143
208
  port.addEventListener('message', (event) => {
144
209
  if (!serving)
@@ -157,10 +222,52 @@ export function serveMdRuntime(options) {
157
222
  if (serving)
158
223
  view.narrow(next);
159
224
  },
225
+ code(next, space) {
226
+ if (!serving)
227
+ return;
228
+ facts = { ...facts, code: next, space };
229
+ view.facts(facts);
230
+ },
231
+ search(next) {
232
+ if (!serving)
233
+ return;
234
+ facts = { ...facts, search: next };
235
+ view.facts(facts);
236
+ },
237
+ answered(queries, done) {
238
+ const keys = queries.map(queryKey);
239
+ if (keys.every((key) => answeredKeys.has(key)))
240
+ done();
241
+ else
242
+ awaited = { keys, done };
243
+ },
244
+ readiness(deliver) {
245
+ if (!serving)
246
+ return () => { };
247
+ const stop = view.watch('readiness', [], (value) => {
248
+ if (serving)
249
+ deliver(value);
250
+ });
251
+ const end = () => {
252
+ followed.delete(end);
253
+ stop();
254
+ };
255
+ followed.add(end);
256
+ return end;
257
+ },
160
258
  };
161
259
  }
162
260
  return {
163
261
  attach,
262
+ seed(entry) {
263
+ runtime.seed(entry);
264
+ },
265
+ persisted(answer) {
266
+ runtime.persisted(answer);
267
+ },
268
+ shown(onScreen) {
269
+ runtime.shown(onScreen);
270
+ },
164
271
  async endAuthorization(holder) {
165
272
  authorized = false;
166
273
  for (const [detach, send] of [...attachments]) {
@@ -168,8 +275,9 @@ export function serveMdRuntime(options) {
168
275
  detach();
169
276
  }
170
277
  close();
171
- if (!(await removeRuntimeStore(holder)))
278
+ if (!(await options.database.ask({ kind: 'authored.end', holder: holder ?? null }))) {
172
279
  await options.shell.dropGeneration();
280
+ }
173
281
  },
174
282
  lose(locators) {
175
283
  return runtime.lose(locators);
@@ -179,5 +287,5 @@ export function serveMdRuntime(options) {
179
287
  },
180
288
  };
181
289
  }
290
+ export { entrySeedOf } from './seed.js';
182
291
  export { createRecovery, retryDelay, } from './recovery.js';
183
- export { AUTHORED_SCHEMA, authoredBinding, authoredBy, authoredHolder, bindAuthored, 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
  }