@agentshouse/mdruntime 0.1.0-cef5833f6c689 → 0.1.0-cf04ede9fb796

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 (247) hide show
  1. package/README.md +1 -1
  2. package/dist/acceptance.d.ts +6 -0
  3. package/dist/acceptance.d.ts.map +1 -0
  4. package/dist/acceptance.js +389 -0
  5. package/dist/actions.d.ts +20 -0
  6. package/dist/actions.d.ts.map +1 -0
  7. package/dist/actions.js +251 -0
  8. package/dist/adapter.d.ts +24 -21
  9. package/dist/adapter.d.ts.map +1 -1
  10. package/dist/attached-model.d.ts +3 -10
  11. package/dist/attached-model.d.ts.map +1 -1
  12. package/dist/attached-model.js +21 -56
  13. package/dist/bootstrap.d.ts +8 -4
  14. package/dist/bootstrap.d.ts.map +1 -1
  15. package/dist/bootstrap.js +207 -76
  16. package/dist/cell.d.ts +6 -0
  17. package/dist/cell.d.ts.map +1 -0
  18. package/dist/cell.js +9 -0
  19. package/dist/change.d.ts +1 -0
  20. package/dist/change.d.ts.map +1 -1
  21. package/dist/chat-types.d.ts +5 -0
  22. package/dist/chat-types.d.ts.map +1 -0
  23. package/dist/chat-types.js +13 -0
  24. package/dist/client.d.ts +15 -1
  25. package/dist/client.d.ts.map +1 -1
  26. package/dist/client.js +3 -0
  27. package/dist/compile.d.ts +5 -0
  28. package/dist/compile.d.ts.map +1 -1
  29. package/dist/compile.js +189 -61
  30. package/dist/connection.d.ts +5 -141
  31. package/dist/connection.d.ts.map +1 -1
  32. package/dist/connection.js +101 -5175
  33. package/dist/conversation-live.d.ts +136 -0
  34. package/dist/conversation-live.d.ts.map +1 -0
  35. package/dist/conversation-live.js +248 -0
  36. package/dist/conversation-row.d.ts +33 -0
  37. package/dist/conversation-row.d.ts.map +1 -0
  38. package/dist/conversation-row.js +53 -0
  39. package/dist/conversation.d.ts +29 -34
  40. package/dist/conversation.d.ts.map +1 -1
  41. package/dist/conversation.js +838 -821
  42. package/dist/discovery.d.ts +10 -0
  43. package/dist/discovery.d.ts.map +1 -0
  44. package/dist/discovery.js +175 -0
  45. package/dist/durability.d.ts +15 -0
  46. package/dist/durability.d.ts.map +1 -1
  47. package/dist/entry.d.ts.map +1 -1
  48. package/dist/entry.js +4 -3
  49. package/dist/figures.d.ts +49 -0
  50. package/dist/figures.d.ts.map +1 -0
  51. package/dist/figures.js +197 -0
  52. package/dist/holdings.d.ts +29 -0
  53. package/dist/holdings.d.ts.map +1 -0
  54. package/dist/holdings.js +95 -0
  55. package/dist/host.d.ts +1 -0
  56. package/dist/host.d.ts.map +1 -1
  57. package/dist/host.js +11 -4
  58. package/dist/index.d.ts +20 -6
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +5 -1
  61. package/dist/install.d.ts +56 -0
  62. package/dist/install.d.ts.map +1 -0
  63. package/dist/install.js +556 -0
  64. package/dist/job.d.ts +20 -1
  65. package/dist/job.d.ts.map +1 -1
  66. package/dist/job.js +26 -0
  67. package/dist/lifecycle.d.ts +7 -0
  68. package/dist/lifecycle.d.ts.map +1 -0
  69. package/dist/lifecycle.js +268 -0
  70. package/dist/listing.d.ts +53 -0
  71. package/dist/listing.d.ts.map +1 -0
  72. package/dist/listing.js +176 -0
  73. package/dist/live.d.ts +4 -4
  74. package/dist/live.d.ts.map +1 -1
  75. package/dist/live.js +53 -15
  76. package/dist/locks.d.ts +9 -0
  77. package/dist/locks.d.ts.map +1 -0
  78. package/dist/locks.js +61 -0
  79. package/dist/log.d.ts +1 -0
  80. package/dist/log.d.ts.map +1 -1
  81. package/dist/lost.d.ts +5 -0
  82. package/dist/lost.d.ts.map +1 -0
  83. package/dist/lost.js +61 -0
  84. package/dist/memory.d.ts +3 -1
  85. package/dist/memory.d.ts.map +1 -1
  86. package/dist/memory.js +43 -3
  87. package/dist/messages.d.ts +25 -1
  88. package/dist/messages.d.ts.map +1 -1
  89. package/dist/messages.js +82 -3
  90. package/dist/model.d.ts +1 -7
  91. package/dist/model.d.ts.map +1 -1
  92. package/dist/model.js +0 -6
  93. package/dist/models.d.ts +14 -0
  94. package/dist/models.d.ts.map +1 -0
  95. package/dist/models.js +195 -0
  96. package/dist/opening.d.ts +4 -0
  97. package/dist/opening.d.ts.map +1 -0
  98. package/dist/opening.js +57 -0
  99. package/dist/outcome.d.ts +4 -1
  100. package/dist/outcome.d.ts.map +1 -1
  101. package/dist/outcome.js +3 -0
  102. package/dist/overlay.d.ts +1 -0
  103. package/dist/overlay.d.ts.map +1 -1
  104. package/dist/overlay.js +11 -0
  105. package/dist/parts.d.ts +60 -0
  106. package/dist/parts.d.ts.map +1 -0
  107. package/dist/parts.js +126 -0
  108. package/dist/paths.d.ts +1 -0
  109. package/dist/paths.d.ts.map +1 -1
  110. package/dist/paths.js +22 -0
  111. package/dist/preparation.d.ts +20 -0
  112. package/dist/preparation.d.ts.map +1 -0
  113. package/dist/preparation.js +226 -0
  114. package/dist/queries.d.ts +16 -0
  115. package/dist/queries.d.ts.map +1 -0
  116. package/dist/queries.js +272 -0
  117. package/dist/query.d.ts +10 -1
  118. package/dist/query.d.ts.map +1 -1
  119. package/dist/questions.d.ts +34 -0
  120. package/dist/questions.d.ts.map +1 -0
  121. package/dist/questions.js +122 -0
  122. package/dist/reach.d.ts +8 -6
  123. package/dist/reach.d.ts.map +1 -1
  124. package/dist/reach.js +159 -100
  125. package/dist/react.d.ts +7 -1
  126. package/dist/react.d.ts.map +1 -1
  127. package/dist/read.d.ts +7 -0
  128. package/dist/read.d.ts.map +1 -0
  129. package/dist/read.js +17 -0
  130. package/dist/readiness.d.ts +0 -1
  131. package/dist/readiness.d.ts.map +1 -1
  132. package/dist/reads.d.ts +37 -0
  133. package/dist/reads.d.ts.map +1 -0
  134. package/dist/reads.js +171 -0
  135. package/dist/recovery.d.ts.map +1 -1
  136. package/dist/recovery.js +9 -1
  137. package/dist/refresh.d.ts +1 -1
  138. package/dist/refresh.d.ts.map +1 -1
  139. package/dist/refresh.js +8 -20
  140. package/dist/refusal.d.ts +5 -0
  141. package/dist/refusal.d.ts.map +1 -0
  142. package/dist/refusal.js +56 -0
  143. package/dist/replica.d.ts +7 -7
  144. package/dist/replica.d.ts.map +1 -1
  145. package/dist/replica.js +50 -18
  146. package/dist/room-drafts.d.ts +24 -0
  147. package/dist/room-drafts.d.ts.map +1 -0
  148. package/dist/room-drafts.js +216 -0
  149. package/dist/rows.d.ts +14 -5
  150. package/dist/rows.d.ts.map +1 -1
  151. package/dist/rows.js +50 -58
  152. package/dist/runtime.d.ts +43 -0
  153. package/dist/runtime.d.ts.map +1 -0
  154. package/dist/runtime.js +1 -0
  155. package/dist/save.d.ts +5 -1
  156. package/dist/save.d.ts.map +1 -1
  157. package/dist/save.js +19 -13
  158. package/dist/saves.d.ts +70 -0
  159. package/dist/saves.d.ts.map +1 -0
  160. package/dist/saves.js +1008 -0
  161. package/dist/seed.d.ts +11 -2
  162. package/dist/seed.d.ts.map +1 -1
  163. package/dist/seed.js +71 -0
  164. package/dist/shared.d.ts +1 -1
  165. package/dist/shared.d.ts.map +1 -1
  166. package/dist/shared.js +9 -5
  167. package/dist/shown.d.ts +31 -0
  168. package/dist/shown.d.ts.map +1 -0
  169. package/dist/shown.js +295 -0
  170. package/dist/socket/admission.d.ts +7 -0
  171. package/dist/socket/admission.d.ts.map +1 -0
  172. package/dist/socket/admission.js +39 -0
  173. package/dist/socket/answers.d.ts +6 -0
  174. package/dist/socket/answers.d.ts.map +1 -0
  175. package/dist/socket/answers.js +20 -0
  176. package/dist/socket/lanes.d.ts +20 -0
  177. package/dist/socket/lanes.d.ts.map +1 -0
  178. package/dist/socket/lanes.js +77 -0
  179. package/dist/socket/reads.d.ts +10 -0
  180. package/dist/socket/reads.d.ts.map +1 -0
  181. package/dist/socket/reads.js +31 -0
  182. package/dist/socket/rooms.d.ts +44 -0
  183. package/dist/socket/rooms.d.ts.map +1 -0
  184. package/dist/socket/rooms.js +90 -0
  185. package/dist/socket/session.d.ts +39 -0
  186. package/dist/socket/session.d.ts.map +1 -0
  187. package/dist/socket/session.js +23 -0
  188. package/dist/socket.d.ts +70 -0
  189. package/dist/socket.d.ts.map +1 -0
  190. package/dist/socket.js +175 -0
  191. package/dist/source.d.ts +61 -0
  192. package/dist/source.d.ts.map +1 -0
  193. package/dist/source.js +81 -0
  194. package/dist/status.d.ts +0 -2
  195. package/dist/status.d.ts.map +1 -1
  196. package/dist/status.js +0 -6
  197. package/dist/store/fences.d.ts +16 -0
  198. package/dist/store/fences.d.ts.map +1 -0
  199. package/dist/store/fences.js +26 -0
  200. package/dist/store/installs.d.ts +30 -0
  201. package/dist/store/installs.d.ts.map +1 -0
  202. package/dist/store/installs.js +34 -0
  203. package/dist/store/readiness.d.ts +10 -0
  204. package/dist/store/readiness.d.ts.map +1 -0
  205. package/dist/store/readiness.js +52 -0
  206. package/dist/store/records.d.ts +212 -0
  207. package/dist/store/records.d.ts.map +1 -0
  208. package/dist/store/records.js +431 -0
  209. package/dist/store/room-held.d.ts +8 -0
  210. package/dist/store/room-held.d.ts.map +1 -0
  211. package/dist/store/room-held.js +17 -0
  212. package/dist/store/space.d.ts +11 -0
  213. package/dist/store/space.d.ts.map +1 -0
  214. package/dist/store/space.js +43 -0
  215. package/dist/store/watchers.d.ts +17 -0
  216. package/dist/store/watchers.d.ts.map +1 -0
  217. package/dist/store/watchers.js +57 -0
  218. package/dist/store/writes.d.ts +24 -0
  219. package/dist/store/writes.d.ts.map +1 -0
  220. package/dist/store/writes.js +125 -0
  221. package/dist/store.d.ts +107 -152
  222. package/dist/store.d.ts.map +1 -1
  223. package/dist/store.js +143 -394
  224. package/dist/stored.d.ts +58 -64
  225. package/dist/stored.d.ts.map +1 -1
  226. package/dist/stored.js +253 -147
  227. package/dist/surface.d.ts +88 -0
  228. package/dist/surface.d.ts.map +1 -0
  229. package/dist/surface.js +223 -0
  230. package/dist/sync.d.ts +19 -0
  231. package/dist/sync.d.ts.map +1 -0
  232. package/dist/sync.js +532 -0
  233. package/dist/tables.d.ts +114 -49
  234. package/dist/tables.d.ts.map +1 -1
  235. package/dist/tables.js +203 -49
  236. package/dist/tallies.d.ts +18 -0
  237. package/dist/tallies.d.ts.map +1 -0
  238. package/dist/tallies.js +129 -0
  239. package/dist/validation.d.ts.map +1 -1
  240. package/dist/validation.js +4 -4
  241. package/dist/wire.d.ts +16 -1
  242. package/dist/wire.d.ts.map +1 -1
  243. package/dist/wire.js +6 -0
  244. package/package.json +2 -2
  245. package/dist/fence.d.ts +0 -6
  246. package/dist/fence.d.ts.map +0 -1
  247. package/dist/fence.js +0 -10
package/dist/compile.js CHANGED
@@ -3,11 +3,11 @@ import { binaryRecord } from './binary.js';
3
3
  import { documentKey, pathOfKey, roomOfKey } from './rows.js';
4
4
  import { FROM_START, MAXIMUM_WINDOW } from './windows.js';
5
5
  const { all, any, exists, fragment, grouped, joined, listed } = sql;
6
- const VISIBLE = (alias) => `${alias}.visible = 1 AND ${alias}.present = 1 AND ${alias}.queried = 1`;
6
+ export const VISIBLE = (alias) => `${alias}.visible = 1 AND ${alias}.present = 1 AND ${alias}.queried = 1`;
7
7
  function located(alias) {
8
8
  return fragment(`(SELECT k.locator FROM replica_keys k WHERE k.key = ${alias}.key)`);
9
9
  }
10
- function within(alias, path) {
10
+ export function within(alias, path) {
11
11
  return fragment(`(${alias}.path = ? OR (${alias}.path >= ? AND ${alias}.path < ?))`, [
12
12
  path,
13
13
  `${path}/`,
@@ -116,7 +116,18 @@ const GROUP_TIES = {
116
116
  locale: undefined,
117
117
  localeOptions: undefined,
118
118
  };
119
- function keyTerm(key, ordering, index) {
119
+ const GREATEST = { ...GROUP_ORDER, direction: 'desc', nulls: 'last' };
120
+ const TIMES = {
121
+ created: { value: 'd.created', instant: 'd.created_instant' },
122
+ updated: { value: "(d.change ->> '$.time')", instant: 'd.changed_instant' },
123
+ };
124
+ function subfolderOf(column, prefix) {
125
+ const root = prefix ?? '';
126
+ const base = root === '' ? '' : `${root}/`;
127
+ const rest = `substr(${column}, length(?) + 1)`;
128
+ return fragment(`(CASE WHEN ${column} = ? THEN NULL WHEN instr(${rest}, '/') = 0 THEN ${column} ELSE ? || substr(${rest}, 1, instr(${rest}, '/') - 1) END)`, [root, base, base, base, base]);
129
+ }
130
+ function keyTerm(key, ordering, index, prefix) {
120
131
  if (key.of === 'field') {
121
132
  const alias = `o${index}`;
122
133
  return {
@@ -133,13 +144,37 @@ function keyTerm(key, ordering, index) {
133
144
  ], ''),
134
145
  };
135
146
  }
147
+ if (key.of === 'size') {
148
+ return {
149
+ term: {
150
+ ordering,
151
+ kind: fragment("(CASE WHEN d.bytes IS NULL THEN 'null' ELSE 'number' END)"),
152
+ value: fragment('d.bytes'),
153
+ },
154
+ join: null,
155
+ };
156
+ }
157
+ if (key.of === 'created' || key.of === 'updated') {
158
+ const { value, instant } = TIMES[key.of];
159
+ return {
160
+ term: {
161
+ ordering,
162
+ kind: fragment(`(CASE WHEN ${value} IS NULL THEN 'null' ELSE 'string' END)`),
163
+ value: fragment(value),
164
+ instant: fragment(instant),
165
+ },
166
+ join: null,
167
+ };
168
+ }
136
169
  const expression = key.of === 'room'
137
170
  ? located('d')
138
171
  : key.of === 'path'
139
172
  ? fragment('d.path')
140
173
  : key.of === 'type'
141
174
  ? fragment('d.type')
142
- : fragment('d.folder');
175
+ : key.of === 'subfolder'
176
+ ? subfolderOf('d.folder', prefix)
177
+ : fragment('d.folder');
143
178
  return {
144
179
  term: {
145
180
  ordering,
@@ -160,16 +195,17 @@ function decoded(kind, value) {
160
195
  return JSON.parse(value);
161
196
  return null;
162
197
  }
198
+ function sortedOf(kind, value, instant) {
199
+ return sql.sortValue(kind, decoded(kind, value), instant);
200
+ }
163
201
  function sortedValue(row, index) {
164
- const kind = row[`k${index}`];
165
- return sql.sortValue(kind, decoded(kind, row[`v${index}`]), row[`i${index}`]);
202
+ return sortedOf(row[`k${index}`], row[`v${index}`], row[`i${index}`]);
166
203
  }
167
204
  function decodedKey(key, row, index) {
168
- if (key.of === 'field') {
169
- const kind = row[`k${index}`];
170
- return kind === null || kind === undefined ? undefined : sortedValue(row, index);
171
- }
172
- return row[`v${index}`] ?? null;
205
+ const kind = row[`k${index}`];
206
+ if (key.of === 'field' && (kind === null || kind === undefined))
207
+ return undefined;
208
+ return sortedValue(row, index);
173
209
  }
174
210
  function instantOf(term) {
175
211
  return term.instant ?? fragment('NULL');
@@ -279,10 +315,9 @@ function documentOf(shape, room, row, linked) {
279
315
  const type = row.type;
280
316
  const fileId = row.file_id ?? null;
281
317
  const revision = row.revision ?? null;
282
- const content = row.content ?? null;
283
- const unheld = Number(row.unheld) === 1 ? { textHeld: false } : {};
284
318
  if (type === null) {
285
319
  const binary = row.binary === null ? null : JSON.parse(row.binary);
320
+ const content = row.content ?? null;
286
321
  return {
287
322
  room,
288
323
  path,
@@ -292,12 +327,13 @@ function documentOf(shape, room, row, linked) {
292
327
  binaryFile: binaryRecord(path, binary, revision ?? undefined),
293
328
  }),
294
329
  ...(shape.markdown && content !== null ? { markdown: content } : {}),
295
- ...unheld,
330
+ ...(shape.change ? { change: changeOf(row) } : {}),
296
331
  ...(shape.fileId ? { fileId } : {}),
297
332
  ...(shape.revision ? { revision } : {}),
333
+ ...heldFacts(shape, row),
298
334
  };
299
335
  }
300
- const read = bodied(shape) && content !== null ? parse(content, path) : null;
336
+ const read = bodied(shape) ? parse(row.content, path) : null;
301
337
  const body = read?.ok === true ? read.document : null;
302
338
  const fields = JSON.parse(row.fields ?? '{}');
303
339
  return {
@@ -315,16 +351,21 @@ function documentOf(shape, room, row, linked) {
315
351
  ? {}
316
352
  : { sections: sectionsOf(body.sections, shape.sections) }),
317
353
  ...(shape.preamble && body !== null ? { preamble: body.preamble } : {}),
318
- ...(shape.markdown && content !== null ? { markdown: content } : {}),
319
- ...unheld,
354
+ ...(shape.markdown ? { markdown: row.content } : {}),
320
355
  ...(shape.backlinks ? { backlinks: linked.get(documentKey(room, path)) ?? [] } : {}),
321
- ...(shape.change
322
- ? {
323
- change: row.change === null ? null : JSON.parse(row.change),
324
- }
325
- : {}),
356
+ ...(shape.change ? { change: changeOf(row) } : {}),
326
357
  ...(shape.fileId ? { fileId } : {}),
327
358
  ...(shape.revision ? { revision } : {}),
359
+ ...heldFacts(shape, row),
360
+ };
361
+ }
362
+ function changeOf(row) {
363
+ return row.change === null ? null : JSON.parse(row.change);
364
+ }
365
+ function heldFacts(shape, row) {
366
+ return {
367
+ ...(shape.size ? { size: row.bytes === null ? null : Number(row.bytes) } : {}),
368
+ ...(shape.created ? { created: row.created ?? null } : {}),
328
369
  };
329
370
  }
330
371
  function backlinksOf(connection, bound, rows) {
@@ -350,7 +391,7 @@ function backlinksOf(connection, bound, rows) {
350
391
  return linked;
351
392
  }
352
393
  function documents(connection, bound, plan, shape, budget) {
353
- const terms = shape.orderBy.map(({ key, options }, index) => keyTerm(key, orderingOf(options), index));
394
+ const terms = shape.orderBy.map(({ key, options }, index) => keyTerm(key, orderingOf(options), index, plan.root.pathPrefix));
354
395
  const filter = filtered(bound, plan);
355
396
  const cursor = plan.after?.values ?? null;
356
397
  const room = located('d');
@@ -371,7 +412,7 @@ function documents(connection, bound, plan, shape, budget) {
371
412
  ? null
372
413
  : sql.following(terms.map(({ term }, index) => sql.beyond(bound.collate, term, cursor[index])), tie);
373
414
  const selected = joined([
374
- fragment('SELECT d.id, d.key, d.path, d.type, d.binary, d.revision, d.fields, d.change, d.file_id, d.content IS NULL AND d.outline IS NOT NULL AS unheld'),
415
+ fragment('SELECT d.id, d.key, d.path, d.type, d.binary, d.revision, d.fields, d.change, d.file_id, d.bytes, d.created'),
375
416
  ...terms.map(({ term }, index) => joined([
376
417
  fragment(`, ${term.kind.sql} AS k${index}`, term.kind.bind),
377
418
  fragment(`, ${term.value.sql} AS v${index}`, term.value.bind),
@@ -440,16 +481,18 @@ function withContent(connection, rows, budget) {
440
481
  .map((row) => [row.id, row.content]));
441
482
  return kept.map((row) => ({ ...row, content: held.get(row.id) ?? null }));
442
483
  }
443
- function storedFolders(bound, plan) {
484
+ function storedFolders(bound, plan, subfolder) {
444
485
  if (plan.paths !== null || plan.fileIds !== null)
445
486
  return null;
446
487
  if (plan.hop !== null || plan.backlinks !== null)
447
488
  return null;
489
+ if (subfolder && plan.folder !== null)
490
+ return null;
448
491
  const whole = bound.rooms.filter(({ locator }) => bound.reach === null || bound.reach.rooms.includes(locator));
449
492
  if (whole.length === 0)
450
493
  return null;
451
494
  const keys = whole.map(({ key }) => key);
452
- const prefix = plan.root.pathPrefix;
495
+ const prefix = plan.root.pathPrefix ?? '';
453
496
  const outside = (bound.reach?.areas ?? []).flatMap((area) => {
454
497
  const key = bound.keys.get(area.room);
455
498
  if (key === undefined)
@@ -457,27 +500,51 @@ function storedFolders(bound, plan) {
457
500
  const fence = fenced('f', key, area, true);
458
501
  return [fragment(`NOT ${grouped(fence).sql}`, fence.bind)];
459
502
  });
503
+ const under = prefix === ''
504
+ ? subfolder
505
+ ? [fragment("f.path <> ''")]
506
+ : []
507
+ : [
508
+ subfolder
509
+ ? fragment('(f.path >= ? AND f.path < ?)', [`${prefix}/`, `${prefix}0`])
510
+ : within('f', prefix),
511
+ ];
460
512
  return all([
461
513
  fragment(`f.key IN ${listed(keys).sql} AND f.layer = 0 AND f.present = 1`, keys),
462
514
  ...outside,
463
- ...(prefix === null || prefix === ''
464
- ? []
465
- : [
466
- fragment('(f.path = ? OR (f.path >= ? AND f.path < ?))', [
467
- prefix,
468
- `${prefix}/`,
469
- `${prefix}0`,
470
- ]),
471
- ]),
515
+ ...under,
516
+ ...(plan.outside ?? []).map((folder) => fragment(`NOT ${within('f', folder).sql}`, within('f', folder).bind)),
472
517
  ...(plan.folder === null ? [] : [fragment('f.path = ?', [plan.folder])]),
473
518
  ]);
474
519
  }
520
+ const SIZES = [
521
+ 'CASE WHEN d.binary IS NULL THEN 1 ELSE 0 END AS dn',
522
+ 'CASE WHEN d.binary IS NULL THEN d.bytes ELSE 0 END AS ds',
523
+ 'CASE WHEN d.binary IS NULL THEN 0 ELSE 1 END AS fn',
524
+ 'CASE WHEN d.binary IS NULL THEN 0 ELSE d.bytes END AS fs',
525
+ ];
526
+ const LATEST = "d.changed_instant || ' ' || (d.change ->> '$.time') AS u";
527
+ function greatestTerm(ordering) {
528
+ return { ordering, kind: fragment('gk'), value: fragment('gv'), instant: fragment('gi') };
529
+ }
530
+ function latestOf(held) {
531
+ if (typeof held !== 'string')
532
+ return null;
533
+ return held.slice(held.indexOf(' ') + 1);
534
+ }
475
535
  function groups(connection, bound, plan, shape) {
536
+ const prefix = plan.root.pathPrefix;
476
537
  const keyed = shape.groupBy.map((key, index) => {
477
- const { term, join } = keyTerm(key, GROUP_ORDER, index);
538
+ const { term, join } = keyTerm(key, GROUP_ORDER, index, prefix);
478
539
  const kind = fragment(`COALESCE(${term.kind.sql}, 'null')`, term.kind.bind);
479
540
  return { term: { ...term, kind }, join };
480
541
  });
542
+ const ordering = shape.orderBy.map(({ by }) => by);
543
+ const sized = shape.size || ordering.includes('size');
544
+ const dated = shape.updated || ordering.includes('updated');
545
+ const greatest = shape.greatest === null
546
+ ? null
547
+ : keyTerm({ of: 'field', field: shape.greatest }, GREATEST, keyed.length, prefix);
481
548
  const filter = filtered(bound, plan);
482
549
  const inner = joined([
483
550
  fragment('SELECT '),
@@ -486,40 +553,93 @@ function groups(connection, bound, plan, shape) {
486
553
  fragment(`, ${term.value.sql} AS v${index}`, term.value.bind),
487
554
  fragment(`, ${instantOf(term).sql} AS i${index}`, instantOf(term).bind),
488
555
  ], '')), ', '),
489
- fragment(', 1 AS n FROM replica_entries d'),
490
- ...keyed.flatMap(({ join }) => (join === null ? [] : [fragment(' '), join])),
556
+ fragment(['', '1 AS n', ...(sized ? SIZES : []), ...(dated ? [LATEST] : [])].join(', ')),
557
+ ...(greatest === null
558
+ ? []
559
+ : [
560
+ fragment(`, ${greatest.term.kind.sql} AS gk`, greatest.term.kind.bind),
561
+ fragment(`, ${greatest.term.value.sql} AS gv`, greatest.term.value.bind),
562
+ fragment(`, ${instantOf(greatest.term).sql} AS gi`, instantOf(greatest.term).bind),
563
+ ]),
564
+ fragment(' FROM replica_entries d'),
565
+ ...[...keyed, ...(greatest === null ? [] : [greatest])].flatMap(({ join }) => join === null ? [] : [fragment(' '), join]),
491
566
  fragment(' WHERE '),
492
567
  filter,
493
568
  ], '');
494
- const folders = shape.groupBy.length === 1 && shape.groupBy[0].of === 'folder'
495
- ? storedFolders(bound, plan)
496
- : null;
569
+ const only = shape.groupBy.length === 1 ? shape.groupBy[0].of : null;
570
+ const subfolder = only === 'subfolder';
571
+ const folders = only === 'folder' || subfolder ? storedFolders(bound, plan, subfolder) : null;
572
+ const folderKey = subfolder ? subfolderOf('f.path', prefix) : fragment('f.path');
573
+ const zeros = [
574
+ ...(sized ? ['0', '0', '0', '0'] : []),
575
+ ...(dated ? ['NULL'] : []),
576
+ ...(greatest === null ? [] : ['NULL', 'NULL', 'NULL']),
577
+ ];
497
578
  const source = folders === null
498
579
  ? inner
499
580
  : joined([
500
581
  inner,
501
- fragment(" UNION ALL SELECT 'string' AS k0, f.path AS v0, NULL AS i0, 0 AS n FROM replica_folders f WHERE "),
582
+ fragment(` UNION ALL SELECT 'string' AS k0, ${folderKey.sql} AS v0, NULL AS i0, 0 AS n${zeros.map((one) => `, ${one}`).join('')} FROM replica_folders f WHERE `, folderKey.bind),
502
583
  folders,
503
584
  ], '');
504
- const columns = keyed
505
- .map((_, index) => `k${index}, min(v${index}) AS v${index}, i${index}`)
506
- .join(', ');
507
585
  const held = keyed
508
586
  .map((_, index) => `k${index}, i${index}, CASE WHEN i${index} IS NULL THEN v${index} END`)
509
587
  .join(', ');
510
- const counted = {
511
- ordering: { ...GROUP_ORDER },
512
- kind: fragment("'number'"),
513
- value: fragment('n'),
514
- };
515
- const outer = (index, ordering) => ({
516
- ordering,
588
+ const ranked = greatest === null
589
+ ? source
590
+ : joined([
591
+ fragment(`SELECT *, ROW_NUMBER() OVER (PARTITION BY ${held} ORDER BY `),
592
+ sql.sorted(bound.collate, greatestTerm(GREATEST)),
593
+ fragment(', gv) AS gr FROM ('),
594
+ source,
595
+ fragment(')'),
596
+ ], '');
597
+ const columns = [
598
+ ...keyed.map((_, index) => `k${index}, min(v${index}) AS v${index}, i${index}`),
599
+ 'sum(n) AS n',
600
+ ...(sized ? ['sum(dn) AS dn', 'sum(ds) AS ds', 'sum(fn) AS fn', 'sum(fs) AS fs'] : []),
601
+ ...(dated ? ['max(u) AS u'] : []),
602
+ ...(greatest === null
603
+ ? []
604
+ : ['gk', 'gv', 'gi'].map((column) => `min(CASE WHEN gr = 1 THEN ${column} END) AS ${column}`)),
605
+ ].join(', ');
606
+ const outer = (index, order) => ({
607
+ ordering: order,
517
608
  kind: fragment(`k${index}`),
518
609
  value: fragment(`v${index}`),
519
610
  });
520
- const ordered = shape.orderBy.map(({ by, direction }) => by === 'count'
521
- ? { ...counted, ordering: { ...GROUP_ORDER, direction } }
522
- : { ...outer(by, { ...GROUP_ORDER, direction }), instant: fragment(`i${by}`) });
611
+ const termOf = (by, order) => {
612
+ if (by === 'count')
613
+ return { ordering: order, kind: fragment("'number'"), value: fragment('n') };
614
+ if (by === 'size') {
615
+ return { ordering: order, kind: fragment("'number'"), value: fragment('(ds + fs)') };
616
+ }
617
+ if (by === 'updated') {
618
+ return {
619
+ ordering: order,
620
+ kind: fragment("(CASE WHEN u IS NULL THEN 'null' ELSE 'string' END)"),
621
+ value: fragment("substr(u, instr(u, ' ') + 1)"),
622
+ instant: fragment("substr(u, 1, instr(u, ' ') - 1)"),
623
+ };
624
+ }
625
+ if (by === 'greatest')
626
+ return greatestTerm(order);
627
+ return { ...outer(by, order), instant: fragment(`i${by}`) };
628
+ };
629
+ const valueOf = (row, by) => {
630
+ if (by === 'count')
631
+ return Number(row.n);
632
+ if (by === 'size')
633
+ return Number(row.ds) + Number(row.fs);
634
+ if (by === 'updated') {
635
+ const text = latestOf(row.u);
636
+ return text === null ? null : sql.sortValue('string', text, row.u.split(' ')[0]);
637
+ }
638
+ if (by === 'greatest')
639
+ return sortedOf(row.gk, row.gv, row.gi);
640
+ return sortedValue(row, by);
641
+ };
642
+ const ordered = shape.orderBy.map(({ by, direction, nulls }) => termOf(by, { ...GROUP_ORDER, direction, nulls: nulls ?? GROUP_ORDER.nulls }));
523
643
  const ties = keyed.flatMap((_, index) => [
524
644
  { ...outer(index, GROUP_TIES), total: true },
525
645
  { ordering: GROUP_TIES, kind: fragment("'string'"), value: fragment(`k${index}`) },
@@ -536,7 +656,7 @@ function groups(connection, bound, plan, shape) {
536
656
  : sql.following(ordered.map((term, index) => sql.beyond(bound.collate, term, cursor[index])), sql.following(ties
537
657
  .slice(0, -1)
538
658
  .map((term, index) => sql.beyond(bound.collate, term, tieValues[index])), sql.beyond(bound.collate, ties.at(-1), tieValues.at(-1)).beyond));
539
- const grouping = joined([fragment(`SELECT ${columns}, sum(n) AS n FROM (`), source, fragment(`) GROUP BY ${held}`)], '');
659
+ const grouping = joined([fragment(`SELECT ${columns} FROM (`), ranked, fragment(`) GROUP BY ${held}`)], '');
540
660
  const windowed = joined([
541
661
  fragment('SELECT * FROM ('),
542
662
  grouping,
@@ -549,16 +669,24 @@ function groups(connection, bound, plan, shape) {
549
669
  const rows = connection.rows(windowed.sql, windowed.bind);
550
670
  const kept = plan.limit === null ? rows : rows.slice(0, plan.limit);
551
671
  const keyOf = (row) => keyed.map((_, index) => decoded(row[`k${index}`], row[`v${index}`]));
552
- const found = kept.map((row) => ({ key: keyOf(row), count: Number(row.n) }));
672
+ const found = kept.map((row) => ({
673
+ key: keyOf(row),
674
+ count: Number(row.n),
675
+ ...(shape.size
676
+ ? {
677
+ documents: { count: Number(row.dn), size: Number(row.ds) },
678
+ files: { count: Number(row.fn), size: Number(row.fs) },
679
+ }
680
+ : {}),
681
+ ...(shape.updated ? { updated: latestOf(row.u) } : {}),
682
+ ...(shape.greatest === null ? {} : { greatest: decoded(row.gk, row.gv) }),
683
+ }));
553
684
  const last = kept.at(-1);
554
685
  const next = plan.limit === null || rows.length <= plan.limit
555
686
  ? undefined
556
687
  : last === undefined
557
688
  ? (plan.after?.text ?? FROM_START)
558
- : cursorOf([
559
- ...shape.orderBy.map(({ by }) => by === 'count' ? Number(last.n) : sortedValue(last, by)),
560
- keyOf(last),
561
- ]);
689
+ : cursorOf([...shape.orderBy.map(({ by }) => valueOf(last, by)), keyOf(last)]);
562
690
  const total = plan.total
563
691
  ? Number(connection.rows(joined([fragment('SELECT count(*) AS held FROM ('), grouping, fragment(')')], '').sql, grouping.bind)[0].held)
564
692
  : undefined;
@@ -1,53 +1,8 @@
1
- import { type DocumentQuery, type GroupQuery } from '@agentshouse/mdmodel';
2
- import { type TypesResult } from './model.js';
3
- import { type Observation } from './observation.js';
4
- import { type DocumentResult, type GroupResult, type PendingResult } from './query.js';
5
- import { type EntrySeed } from './seed.js';
6
- import { type SearchRequest, type SearchResult } from './search.js';
7
- import { type Adapter, type Authorization, type Member, type ProviderRefusal, type ServiceMode } from './adapter.js';
8
- import { type ChatDraftSurface, type ConversationAgent, type ConversationEntry, type ConversationOptions, type ConversationSurface, type ConversationView } from './conversation.js';
9
- import { type WrittenBy } from './change.js';
10
- import type { Open } from './open.js';
11
- import { type AttachAnswer, type BinaryLinkAnswer, type CallResult, type HeldBinaryAnswer, type HeldShownAnswer, type HistoryAnswer, type QueueEntry, type Resolution } from './outcome.js';
12
- import { type Recovery } from './recovery.js';
13
- import { type SaveRefusal } from './save.js';
14
- import { type RoomDraft, type RoomDraftParts, type RoomDraftWrite } from './room-draft.js';
15
- import { type SyncStatus } from './status.js';
1
+ import type { Adapter, Authorization } from './adapter.js';
16
2
  import { type RuntimeShell } from './durability.js';
17
- import { type CodeAvailability, type Persistence, type Readiness } from './readiness.js';
18
- import type { RuntimeDatabase } from './tables.js';
19
- import { type NarrowedView, type PortReach, type RuntimeView } from './reach.js';
20
- export type AppTypedSelection = {
21
- roots: readonly string[];
22
- model: TypesResult;
23
- };
24
- export type AppRoom = {
25
- name: string;
26
- locator: string;
27
- handle: string;
28
- operations: import('./adapter.js').OperationScopes;
29
- replica: import('./adapter.js').ReplicaAdmission;
30
- model: TypesResult;
31
- typedSelection: AppTypedSelection | null;
32
- providerOwnedPaths: readonly string[];
33
- roomVersion: string | null;
34
- documents: number;
35
- synchronizationAvailable: boolean;
36
- refusal: ProviderRefusal | null;
37
- locked: boolean;
38
- };
39
- export type RoomSchemas = {
40
- collection: TypesResult;
41
- typedSelection: TypesResult | null;
42
- };
43
- type RefusalReason = 'missing-required-guarantee' | 'revoked-authorization';
44
- export type ConnectionRefusalCode = Open<RefusalReason>;
45
- export type ConnectionRefusal = {
46
- code: ConnectionRefusalCode;
47
- retryable: boolean;
48
- reauthorizationOffered: boolean;
49
- refusal: ProviderRefusal | null;
50
- };
3
+ import { type Recovery } from './recovery.js';
4
+ import { type RuntimeDatabase } from './store.js';
5
+ import { type ComposedRuntime } from './surface.js';
51
6
  export type MdRuntimeOptions = {
52
7
  adapter: Adapter;
53
8
  shell: RuntimeShell;
@@ -56,98 +11,7 @@ export type MdRuntimeOptions = {
56
11
  signal?: AbortSignal;
57
12
  recovery?: Recovery;
58
13
  usableWhenHeld?: readonly string[];
59
- };
60
- export type SaveResult = {
61
- outcome: 'saved';
62
- identifier: string;
63
- } | ({
64
- outcome: 'refused';
65
- } & SaveRefusal);
66
- export type SavedRoomDraft = {
67
- readonly path: string;
68
- readonly revision: string;
69
- };
70
- export type SavedParts = {
71
- readonly path: string;
72
- readonly parts: RoomDraftParts;
73
- };
74
- export type RoomDraftSurface = {
75
- list(): Promise<readonly RoomDraft[]>;
76
- read(room: string, path: string): Promise<RoomDraft | null>;
77
- write(room: string, path: string, revision: string | null, parts: unknown, next?: string): Promise<RoomDraftWrite>;
78
- discard(room: string, path: string, revision: string): Promise<RoomDraftWrite>;
79
- };
80
- export type PresentationSurface = {
81
- read(app: string): Promise<unknown>;
82
- write(app: string, value: unknown): Promise<void>;
83
- edit(app: string, members: Readonly<Record<string, unknown>>): Promise<void>;
84
- };
85
- export type BinaryFileSurface = {
86
- read(room: string, path: string, revision?: string): Promise<HeldBinaryAnswer>;
87
- link(room: string, path: string, revision?: string): Promise<BinaryLinkAnswer>;
88
- show(room: string, path: string, revision?: string): Promise<HeldShownAnswer>;
89
- attach(room: string, file: File): Promise<AttachAnswer>;
90
- part(file: string, part: number): Promise<Uint8Array | null>;
91
- };
92
- export type HistoryQuery = {
93
- revision?: string;
94
- pageToken?: string;
95
- };
96
- export type MdRuntime = {
97
- loaded(): Promise<void>;
98
- rooms(): Promise<readonly AppRoom[]>;
99
- query: {
100
- (query: DocumentQuery): Promise<DocumentResult | PendingResult>;
101
- (query: GroupQuery): Promise<GroupResult | PendingResult>;
102
- };
103
- search(request: SearchRequest): Promise<SearchResult>;
104
- types(locator: string): RoomSchemas;
105
- roomDraft: RoomDraftSurface;
106
- conversation: ConversationSurface;
107
- chatDraft: ChatDraftSurface;
108
- presentation: PresentationSurface;
109
- save(room: string, roomDrafts: readonly SavedRoomDraft[], writtenBy?: WrittenBy): Promise<SaveResult>;
110
- saveParts(room: string, parts: readonly SavedParts[], writtenBy?: WrittenBy): Promise<SaveResult>;
111
- history(locator: string, path: string, query?: HistoryQuery): Promise<HistoryAnswer>;
112
- resolve(room: string, path: string, destination: string): Promise<Resolution>;
113
- binaryFile: BinaryFileSurface;
114
- call(name: string, input: unknown): Promise<CallResult>;
115
- reached(locator: string, roomVersion: string, path?: string): Promise<boolean>;
116
- log(): string;
117
- persistence(): boolean;
118
- retry(): Promise<void>;
119
- cleanUp(): Promise<number>;
120
- observe: {
121
- (topic: 'rooms'): Promise<Observation<readonly AppRoom[]>>;
122
- (topic: 'readiness'): Promise<Observation<Readiness>>;
123
- (topic: 'connection-refusal'): Promise<Observation<ConnectionRefusal | null>>;
124
- (topic: 'storage-loss'): Promise<Observation<string | null>>;
125
- (topic: 'sync-status'): Promise<Observation<SyncStatus>>;
126
- (topic: 'service-mode'): Promise<Observation<ServiceMode>>;
127
- (topic: 'member'): Promise<Observation<Member | null>>;
128
- (topic: 'authority-changes'): Promise<Observation<number>>;
129
- (topic: 'query', query: DocumentQuery): Promise<Observation<DocumentResult | PendingResult>>;
130
- (topic: 'query', query: GroupQuery): Promise<Observation<GroupResult | PendingResult>>;
131
- (topic: 'queue', locator: string): Promise<Observation<readonly QueueEntry[]>>;
132
- (topic: 'room-drafts'): Promise<Observation<readonly RoomDraft[]>>;
133
- (topic: 'presentation', app: string): Promise<Observation<unknown>>;
134
- (topic: 'conversation', conversation: string, options: ConversationOptions): Promise<Observation<ConversationView>>;
135
- (topic: 'conversations'): Promise<Observation<readonly ConversationEntry[]>>;
136
- (topic: 'agents'): Promise<Observation<readonly ConversationAgent[]>>;
137
- };
138
- reauthorize(): Promise<void>;
139
- };
140
- export type RuntimeTopic = 'rooms' | 'readiness' | 'connection-refusal' | 'storage-loss' | 'sync-status' | 'service-mode' | 'member' | 'authority-changes' | 'query' | 'queue' | 'room-drafts' | 'presentation' | 'conversation' | 'conversations' | 'agents';
141
- export type ReadinessPort = {
142
- readonly target: string;
143
- readonly code: CodeAvailability;
144
- };
145
- export type ComposedRuntime = RuntimeView & {
146
- seed(entry: EntrySeed): void;
147
- stop(): Promise<void>;
148
- persisted(answer: Persistence): void;
149
- within(reach: PortReach | null, port: ReadinessPort): NarrowedView;
14
+ build?: string;
150
15
  };
151
16
  export declare function composeRuntime(options: MdRuntimeOptions): ComposedRuntime;
152
- export {};
153
17
  //# sourceMappingURL=connection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAG/E,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAUrE,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAK9D,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAGrE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAIF,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CA+FzE"}