@agentshouse/mdruntime 0.1.0-ce41fec66d91b → 0.1.0-ce5b3c1e6ea87

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 (274) hide show
  1. package/README.md +2 -2
  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 +44 -25
  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 +209 -78
  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/chain.d.ts +2 -1
  20. package/dist/chain.d.ts.map +1 -1
  21. package/dist/change.d.ts +1 -0
  22. package/dist/change.d.ts.map +1 -1
  23. package/dist/chat-types.d.ts +5 -0
  24. package/dist/chat-types.d.ts.map +1 -0
  25. package/dist/chat-types.js +13 -0
  26. package/dist/client.d.ts +20 -4
  27. package/dist/client.d.ts.map +1 -1
  28. package/dist/client.js +3 -0
  29. package/dist/collection.d.ts +2 -1
  30. package/dist/collection.d.ts.map +1 -1
  31. package/dist/compile.d.ts +6 -6
  32. package/dist/compile.d.ts.map +1 -1
  33. package/dist/compile.js +231 -300
  34. package/dist/connection.d.ts +5 -141
  35. package/dist/connection.d.ts.map +1 -1
  36. package/dist/connection.js +101 -5058
  37. package/dist/context.d.ts +2 -0
  38. package/dist/context.d.ts.map +1 -0
  39. package/dist/context.js +7 -0
  40. package/dist/conversation-live.d.ts +136 -0
  41. package/dist/conversation-live.d.ts.map +1 -0
  42. package/dist/conversation-live.js +248 -0
  43. package/dist/conversation-row.d.ts +33 -0
  44. package/dist/conversation-row.d.ts.map +1 -0
  45. package/dist/conversation-row.js +53 -0
  46. package/dist/conversation.d.ts +34 -38
  47. package/dist/conversation.d.ts.map +1 -1
  48. package/dist/conversation.js +856 -850
  49. package/dist/discovery.d.ts +10 -0
  50. package/dist/discovery.d.ts.map +1 -0
  51. package/dist/discovery.js +175 -0
  52. package/dist/durability.d.ts +15 -0
  53. package/dist/durability.d.ts.map +1 -1
  54. package/dist/entry.d.ts +2 -2
  55. package/dist/entry.d.ts.map +1 -1
  56. package/dist/entry.js +17 -7
  57. package/dist/figures.d.ts +48 -0
  58. package/dist/figures.d.ts.map +1 -0
  59. package/dist/figures.js +197 -0
  60. package/dist/holdings.d.ts +29 -0
  61. package/dist/holdings.d.ts.map +1 -0
  62. package/dist/holdings.js +95 -0
  63. package/dist/host.d.ts +4 -5
  64. package/dist/host.d.ts.map +1 -1
  65. package/dist/host.js +23 -22
  66. package/dist/identity.d.ts +0 -1
  67. package/dist/identity.d.ts.map +1 -1
  68. package/dist/identity.js +0 -3
  69. package/dist/index.d.ts +23 -8
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +5 -1
  72. package/dist/install.d.ts +56 -0
  73. package/dist/install.d.ts.map +1 -0
  74. package/dist/install.js +560 -0
  75. package/dist/job.d.ts +33 -0
  76. package/dist/job.d.ts.map +1 -0
  77. package/dist/job.js +54 -0
  78. package/dist/lifecycle.d.ts +7 -0
  79. package/dist/lifecycle.d.ts.map +1 -0
  80. package/dist/lifecycle.js +268 -0
  81. package/dist/listing.d.ts +53 -0
  82. package/dist/listing.d.ts.map +1 -0
  83. package/dist/listing.js +175 -0
  84. package/dist/live.d.ts +5 -4
  85. package/dist/live.d.ts.map +1 -1
  86. package/dist/live.js +62 -20
  87. package/dist/locks.d.ts +9 -0
  88. package/dist/locks.d.ts.map +1 -0
  89. package/dist/locks.js +61 -0
  90. package/dist/log.d.ts +1 -0
  91. package/dist/log.d.ts.map +1 -1
  92. package/dist/lost.d.ts +5 -0
  93. package/dist/lost.d.ts.map +1 -0
  94. package/dist/lost.js +61 -0
  95. package/dist/memory.d.ts +5 -1
  96. package/dist/memory.d.ts.map +1 -1
  97. package/dist/memory.js +47 -8
  98. package/dist/messages.d.ts +27 -3
  99. package/dist/messages.d.ts.map +1 -1
  100. package/dist/messages.js +97 -19
  101. package/dist/model.d.ts +2 -9
  102. package/dist/model.d.ts.map +1 -1
  103. package/dist/model.js +0 -9
  104. package/dist/models.d.ts +14 -0
  105. package/dist/models.d.ts.map +1 -0
  106. package/dist/models.js +193 -0
  107. package/dist/observation.d.ts +2 -2
  108. package/dist/observation.d.ts.map +1 -1
  109. package/dist/observation.js +7 -2
  110. package/dist/opening.d.ts +4 -0
  111. package/dist/opening.d.ts.map +1 -0
  112. package/dist/opening.js +57 -0
  113. package/dist/outcome.d.ts +4 -1
  114. package/dist/outcome.d.ts.map +1 -1
  115. package/dist/outcome.js +3 -0
  116. package/dist/overlay.d.ts +1 -0
  117. package/dist/overlay.d.ts.map +1 -1
  118. package/dist/overlay.js +11 -0
  119. package/dist/parts.d.ts +59 -0
  120. package/dist/parts.d.ts.map +1 -0
  121. package/dist/parts.js +118 -0
  122. package/dist/preparation.d.ts +20 -0
  123. package/dist/preparation.d.ts.map +1 -0
  124. package/dist/preparation.js +226 -0
  125. package/dist/queries.d.ts +16 -0
  126. package/dist/queries.d.ts.map +1 -0
  127. package/dist/queries.js +272 -0
  128. package/dist/query.d.ts +13 -208
  129. package/dist/query.d.ts.map +1 -1
  130. package/dist/query.js +3 -505
  131. package/dist/questions.d.ts +34 -0
  132. package/dist/questions.d.ts.map +1 -0
  133. package/dist/questions.js +122 -0
  134. package/dist/reach.d.ts +14 -12
  135. package/dist/reach.d.ts.map +1 -1
  136. package/dist/reach.js +167 -114
  137. package/dist/react.d.ts +10 -2
  138. package/dist/react.d.ts.map +1 -1
  139. package/dist/read.d.ts +7 -0
  140. package/dist/read.d.ts.map +1 -0
  141. package/dist/read.js +17 -0
  142. package/dist/readiness.d.ts +0 -2
  143. package/dist/readiness.d.ts.map +1 -1
  144. package/dist/reads.d.ts +37 -0
  145. package/dist/reads.d.ts.map +1 -0
  146. package/dist/reads.js +171 -0
  147. package/dist/recovery.d.ts.map +1 -1
  148. package/dist/recovery.js +9 -1
  149. package/dist/refresh.d.ts +1 -1
  150. package/dist/refresh.d.ts.map +1 -1
  151. package/dist/refresh.js +7 -0
  152. package/dist/refusal.d.ts +5 -0
  153. package/dist/refusal.d.ts.map +1 -0
  154. package/dist/refusal.js +56 -0
  155. package/dist/replica.d.ts +8 -8
  156. package/dist/replica.d.ts.map +1 -1
  157. package/dist/replica.js +52 -16
  158. package/dist/room-draft.d.ts +4 -3
  159. package/dist/room-draft.d.ts.map +1 -1
  160. package/dist/room-draft.js +65 -52
  161. package/dist/room-drafts.d.ts +24 -0
  162. package/dist/room-drafts.d.ts.map +1 -0
  163. package/dist/room-drafts.js +216 -0
  164. package/dist/rows.d.ts +14 -21
  165. package/dist/rows.d.ts.map +1 -1
  166. package/dist/rows.js +48 -184
  167. package/dist/runtime.d.ts +43 -0
  168. package/dist/runtime.d.ts.map +1 -0
  169. package/dist/runtime.js +1 -0
  170. package/dist/save.d.ts +3 -1
  171. package/dist/save.d.ts.map +1 -1
  172. package/dist/save.js +16 -11
  173. package/dist/saves.d.ts +70 -0
  174. package/dist/saves.d.ts.map +1 -0
  175. package/dist/saves.js +1006 -0
  176. package/dist/search.d.ts +12 -63
  177. package/dist/search.d.ts.map +1 -1
  178. package/dist/search.js +9 -52
  179. package/dist/seed.d.ts +11 -2
  180. package/dist/seed.d.ts.map +1 -1
  181. package/dist/seed.js +71 -0
  182. package/dist/shared.d.ts +1 -1
  183. package/dist/shared.d.ts.map +1 -1
  184. package/dist/shared.js +9 -5
  185. package/dist/shown.d.ts +31 -0
  186. package/dist/shown.d.ts.map +1 -0
  187. package/dist/shown.js +295 -0
  188. package/dist/socket/admission.d.ts +7 -0
  189. package/dist/socket/admission.d.ts.map +1 -0
  190. package/dist/socket/admission.js +39 -0
  191. package/dist/socket/answers.d.ts +6 -0
  192. package/dist/socket/answers.d.ts.map +1 -0
  193. package/dist/socket/answers.js +20 -0
  194. package/dist/socket/lanes.d.ts +20 -0
  195. package/dist/socket/lanes.d.ts.map +1 -0
  196. package/dist/socket/lanes.js +77 -0
  197. package/dist/socket/reads.d.ts +10 -0
  198. package/dist/socket/reads.d.ts.map +1 -0
  199. package/dist/socket/reads.js +31 -0
  200. package/dist/socket/rooms.d.ts +43 -0
  201. package/dist/socket/rooms.d.ts.map +1 -0
  202. package/dist/socket/rooms.js +90 -0
  203. package/dist/socket/session.d.ts +39 -0
  204. package/dist/socket/session.d.ts.map +1 -0
  205. package/dist/socket/session.js +23 -0
  206. package/dist/socket.d.ts +70 -0
  207. package/dist/socket.d.ts.map +1 -0
  208. package/dist/socket.js +175 -0
  209. package/dist/source.d.ts +61 -0
  210. package/dist/source.d.ts.map +1 -0
  211. package/dist/source.js +81 -0
  212. package/dist/status.d.ts +0 -2
  213. package/dist/status.d.ts.map +1 -1
  214. package/dist/status.js +0 -6
  215. package/dist/store/fences.d.ts +16 -0
  216. package/dist/store/fences.d.ts.map +1 -0
  217. package/dist/store/fences.js +26 -0
  218. package/dist/store/installs.d.ts +30 -0
  219. package/dist/store/installs.d.ts.map +1 -0
  220. package/dist/store/installs.js +34 -0
  221. package/dist/store/readiness.d.ts +10 -0
  222. package/dist/store/readiness.d.ts.map +1 -0
  223. package/dist/store/readiness.js +52 -0
  224. package/dist/store/records.d.ts +212 -0
  225. package/dist/store/records.d.ts.map +1 -0
  226. package/dist/store/records.js +408 -0
  227. package/dist/store/room-held.d.ts +8 -0
  228. package/dist/store/room-held.d.ts.map +1 -0
  229. package/dist/store/room-held.js +17 -0
  230. package/dist/store/space.d.ts +11 -0
  231. package/dist/store/space.d.ts.map +1 -0
  232. package/dist/store/space.js +43 -0
  233. package/dist/store/watchers.d.ts +17 -0
  234. package/dist/store/watchers.d.ts.map +1 -0
  235. package/dist/store/watchers.js +57 -0
  236. package/dist/store/writes.d.ts +24 -0
  237. package/dist/store/writes.d.ts.map +1 -0
  238. package/dist/store/writes.js +125 -0
  239. package/dist/store.d.ts +107 -145
  240. package/dist/store.d.ts.map +1 -1
  241. package/dist/store.js +143 -366
  242. package/dist/stored.d.ts +58 -32
  243. package/dist/stored.d.ts.map +1 -1
  244. package/dist/stored.js +264 -187
  245. package/dist/surface.d.ts +88 -0
  246. package/dist/surface.d.ts.map +1 -0
  247. package/dist/surface.js +223 -0
  248. package/dist/sync.d.ts +20 -0
  249. package/dist/sync.d.ts.map +1 -0
  250. package/dist/sync.js +532 -0
  251. package/dist/tables.d.ts +117 -27
  252. package/dist/tables.d.ts.map +1 -1
  253. package/dist/tables.js +211 -49
  254. package/dist/tallies.d.ts +18 -0
  255. package/dist/tallies.d.ts.map +1 -0
  256. package/dist/tallies.js +129 -0
  257. package/dist/validation.d.ts.map +1 -1
  258. package/dist/validation.js +7 -4
  259. package/dist/windows.d.ts +1 -12
  260. package/dist/windows.d.ts.map +1 -1
  261. package/dist/windows.js +2 -75
  262. package/dist/wire.d.ts +17 -1
  263. package/dist/wire.d.ts.map +1 -1
  264. package/dist/wire.js +7 -0
  265. package/package.json +2 -2
  266. package/dist/fence.d.ts +0 -6
  267. package/dist/fence.d.ts.map +0 -1
  268. package/dist/fence.js +0 -10
  269. package/dist/fulltext.d.ts +0 -27
  270. package/dist/fulltext.d.ts.map +0 -1
  271. package/dist/fulltext.js +0 -370
  272. package/dist/words.d.ts +0 -19
  273. package/dist/words.d.ts.map +0 -1
  274. package/dist/words.js +0 -156
@@ -0,0 +1 @@
1
+ {"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../../src/store/space.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,IAAI,OAAO,CAAC;IAChB,IAAI,IAAI,OAAO,CAAC;IAChB,OAAO,IAAI,OAAO,CAAC;IACnB,eAAe,IAAI,IAAI,CAAC;IACxB,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,IAAI,IAAI,IAAI,CAAC;CACd,CAAC;AAEF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,IAAI,GAAG,KAAK,CA4C/E"}
@@ -0,0 +1,43 @@
1
+ export function createSpace(database, freed) {
2
+ let full = false;
3
+ let probing = null;
4
+ let testing = null;
5
+ function probe() {
6
+ testing ??= database.ask({ kind: 'space.probe' }).then(() => {
7
+ testing = null;
8
+ if (full) {
9
+ full = false;
10
+ if (probing !== null)
11
+ clearInterval(probing);
12
+ probing = null;
13
+ freed();
14
+ }
15
+ return true;
16
+ }, () => {
17
+ testing = null;
18
+ return false;
19
+ });
20
+ return testing;
21
+ }
22
+ return {
23
+ full: () => full,
24
+ fill() {
25
+ if (full)
26
+ return false;
27
+ full = true;
28
+ return true;
29
+ },
30
+ probing: () => probing !== null,
31
+ probeEachMinute() {
32
+ // A device whose storage filled after its install tries a write each minute, so space freed elsewhere ends its read-only mode without a Retry.
33
+ probing = setInterval(() => {
34
+ void probe();
35
+ }, 60_000);
36
+ },
37
+ probe,
38
+ stop() {
39
+ if (probing !== null)
40
+ clearInterval(probing);
41
+ },
42
+ };
43
+ }
@@ -0,0 +1,17 @@
1
+ export type Watcher = {
2
+ held(): boolean;
3
+ stop(): void;
4
+ answer(value: unknown): void;
5
+ };
6
+ export type Watching = 'all' | 'waiting' | 'ready';
7
+ type Watchers = {
8
+ publication(work: () => Promise<void>): Promise<void>;
9
+ owing<T>(topic: string, add: (owed: T | undefined) => T, work: (owed: T) => Promise<void>): Promise<void>;
10
+ watch(topic: string, notify: (value: unknown) => void): Watcher;
11
+ watching(topic: string, which?: Watching): readonly Watcher[];
12
+ tell(topic: string, value: unknown): void;
13
+ close(): void;
14
+ };
15
+ export declare function createWatchers(unpublished: (error: unknown) => void): Watchers;
16
+ export {};
17
+ //# sourceMappingURL=watchers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watchers.d.ts","sourceRoot":"","sources":["../../src/store/watchers.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,IAAI,OAAO,CAAC;IAChB,IAAI,IAAI,IAAI,CAAC;IACb,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC;AAMnD,KAAK,QAAQ,GAAG;IACd,WAAW,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,KAAK,CAAC,CAAC,EACL,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,EAC/B,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;IAChE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,OAAO,EAAE,CAAC;IAC9D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1C,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAEF,wBAAgB,cAAc,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,QAAQ,CA6D9E"}
@@ -0,0 +1,57 @@
1
+ export function createWatchers(unpublished) {
2
+ let published = Promise.resolve();
3
+ const topics = new Map();
4
+ const owed = new Map();
5
+ function publication(work) {
6
+ published = published.then(work).catch(unpublished);
7
+ return published;
8
+ }
9
+ return {
10
+ publication,
11
+ owing(topic, add, work) {
12
+ const held = owed.get(topic);
13
+ if (held !== undefined) {
14
+ held.value = add(held.value);
15
+ return held.shown;
16
+ }
17
+ const owing = { value: add(undefined), shown: Promise.resolve() };
18
+ owed.set(topic, owing);
19
+ owing.shown = publication(async () => {
20
+ if (owed.get(topic) === owing)
21
+ owed.delete(topic);
22
+ await work(owing.value);
23
+ });
24
+ return owing.shown;
25
+ },
26
+ watch(topic, notify) {
27
+ const held = topics.get(topic) ?? new Set();
28
+ topics.set(topic, held);
29
+ const watcher = {
30
+ ready: false,
31
+ held: () => topics.get(topic)?.has(watcher) === true,
32
+ stop() {
33
+ const on = topics.get(topic);
34
+ on?.delete(watcher);
35
+ if (on?.size === 0)
36
+ topics.delete(topic);
37
+ },
38
+ answer(value) {
39
+ watcher.ready = true;
40
+ notify(value);
41
+ },
42
+ };
43
+ held.add(watcher);
44
+ return watcher;
45
+ },
46
+ watching(topic, which = 'all') {
47
+ return [...(topics.get(topic) ?? [])].filter(({ ready }) => which === 'all' || ready === (which === 'ready'));
48
+ },
49
+ tell(topic, value) {
50
+ for (const watcher of topics.get(topic) ?? [])
51
+ watcher.answer(value);
52
+ },
53
+ close() {
54
+ topics.clear();
55
+ },
56
+ };
57
+ }
@@ -0,0 +1,24 @@
1
+ import type { Composition } from '../collection.js';
2
+ import type { RefreshedPage, RuntimeStore } from './records.js';
3
+ export type InstallHold = {
4
+ take(): void;
5
+ release(): void;
6
+ };
7
+ type Writes = {
8
+ exclusive<T>(work: () => Promise<T>): Promise<T>;
9
+ gathered<I, T>(key: string, input: I, merge: (earlier: I, later: I) => I | null, work: (input: I) => Promise<T>): Promise<T>;
10
+ written(): Promise<unknown>;
11
+ startingWrite<T>(work: () => Promise<T>): Promise<T>;
12
+ finishingWrite<T>(work: () => Promise<T>): Promise<T>;
13
+ ahead<T>(work: (hold: InstallHold) => Promise<T>): Promise<T>;
14
+ rederive(local: RuntimeStore, key: number, composition: Composition): Promise<{
15
+ readonly done: boolean;
16
+ readonly text: number;
17
+ }>;
18
+ refreshPage(local: RuntimeStore, key: number, composition: Composition, page: RefreshedPage): Promise<void>;
19
+ stageBytes(): number;
20
+ deriveBytes(): number;
21
+ };
22
+ export declare function createWrites(): Writes;
23
+ export {};
24
+ //# sourceMappingURL=writes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writes.d.ts","sourceRoot":"","sources":["../../src/store/writes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AA8BhE,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,IAAI,IAAI,CAAC;IAAC,OAAO,IAAI,IAAI,CAAA;CAAE,CAAC;AAE5D,KAAK,MAAM,GAAG;IACZ,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACjD,QAAQ,CAAC,CAAC,EAAE,CAAC,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,EACzC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC,CAAC;IACd,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5B,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACrD,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtD,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9D,QAAQ,CACN,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,WAAW,CACT,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,UAAU,IAAI,MAAM,CAAC;IACrB,WAAW,IAAI,MAAM,CAAC;CACvB,CAAC;AAcF,wBAAgB,YAAY,IAAI,MAAM,CAqHrC"}
@@ -0,0 +1,125 @@
1
+ import { yielded } from '../turn.js';
2
+ const DERIVE_BYTES = 1 << 23;
3
+ const DERIVE_FLOOR = 1 << 18;
4
+ // An index build aims at this much database work, so a Save, a query or the next part's progress waits behind at most one short build.
5
+ const DERIVE_AIM_MS = 250;
6
+ // A build past its floor of text stops after a second and a half of work, its full-text writes included, so a Room whose text costs ten times the usual holds a Save, a query or the next part's progress behind no longer build.
7
+ const DERIVE_LONGEST_MS = 1_500;
8
+ const STAGE_BYTES = 1 << 20;
9
+ const STAGE_FLOOR = 1 << 16;
10
+ // A batch aims at this much database work, so a Save or a query waits behind at most one short write.
11
+ const STAGE_AIM_MS = 50;
12
+ async function timed(budget, work) {
13
+ const started = performance.now();
14
+ const done = await work();
15
+ const spent = performance.now() - started;
16
+ if (spent < budget.aim / 2)
17
+ budget.bytes = Math.min(budget.ceiling, Math.round(budget.bytes * 1.5));
18
+ else if (spent > budget.aim * 2) {
19
+ budget.bytes = Math.max(budget.floor, Math.round(budget.bytes / 1.5));
20
+ }
21
+ return done;
22
+ }
23
+ export function createWrites() {
24
+ let mutations = Promise.resolve();
25
+ let gathering = null;
26
+ const stageBudget = {
27
+ bytes: STAGE_FLOOR * 4,
28
+ floor: STAGE_FLOOR,
29
+ ceiling: STAGE_BYTES,
30
+ aim: STAGE_AIM_MS,
31
+ };
32
+ const deriveBudget = {
33
+ bytes: DERIVE_FLOOR * 4,
34
+ floor: DERIVE_FLOOR,
35
+ ceiling: DERIVE_BYTES,
36
+ aim: DERIVE_AIM_MS,
37
+ };
38
+ const installTurns = { busy: false, ahead: 0, finishing: [], starting: [] };
39
+ function exclusive(work) {
40
+ gathering = null;
41
+ const next = mutations.then(work, work);
42
+ mutations = next.then(() => undefined, () => undefined);
43
+ return next;
44
+ }
45
+ function gathered(key, input, merge, work) {
46
+ const tail = gathering;
47
+ if (tail !== null && tail.key === key) {
48
+ const merged = merge(tail.input, input);
49
+ if (merged !== null) {
50
+ tail.input = merged;
51
+ return tail.done;
52
+ }
53
+ }
54
+ const entry = { key, input, done: Promise.resolve() };
55
+ entry.done = exclusive(() => {
56
+ if (gathering === entry)
57
+ gathering = null;
58
+ return work(entry.input);
59
+ });
60
+ gathering = entry;
61
+ return entry.done;
62
+ }
63
+ function nextInstallTurn() {
64
+ if (installTurns.busy || installTurns.ahead > 0)
65
+ return;
66
+ const turn = installTurns.finishing.shift() ?? installTurns.starting.shift();
67
+ if (turn === undefined)
68
+ return;
69
+ installTurns.busy = true;
70
+ turn();
71
+ }
72
+ function installTurn(queue, work) {
73
+ return new Promise((resolve, reject) => {
74
+ queue.push(() => void exclusive(work)
75
+ .then(resolve, reject)
76
+ .finally(() => {
77
+ installTurns.busy = false;
78
+ nextInstallTurn();
79
+ }));
80
+ nextInstallTurn();
81
+ });
82
+ }
83
+ function resumeInstall() {
84
+ if (installTurns.ahead > 0)
85
+ return;
86
+ void yielded().then(nextInstallTurn);
87
+ }
88
+ async function ahead(work) {
89
+ let taken = false;
90
+ const hold = {
91
+ take() {
92
+ if (taken)
93
+ return;
94
+ taken = true;
95
+ installTurns.ahead += 1;
96
+ },
97
+ release() {
98
+ if (!taken)
99
+ return;
100
+ taken = false;
101
+ installTurns.ahead -= 1;
102
+ resumeInstall();
103
+ },
104
+ };
105
+ hold.take();
106
+ try {
107
+ return await work(hold);
108
+ }
109
+ finally {
110
+ hold.release();
111
+ }
112
+ }
113
+ return {
114
+ exclusive,
115
+ gathered,
116
+ written: () => mutations,
117
+ startingWrite: (work) => installTurn(installTurns.starting, work),
118
+ finishingWrite: (work) => installTurn(installTurns.finishing, work),
119
+ ahead,
120
+ rederive: (local, key, composition) => timed(deriveBudget, () => local.rederive(key, composition, deriveBudget.bytes, DERIVE_LONGEST_MS, DERIVE_FLOOR)),
121
+ refreshPage: (local, key, composition, page) => timed(stageBudget, () => local.refresh(key, composition, page)),
122
+ stageBytes: () => stageBudget.bytes,
123
+ deriveBytes: () => deriveBudget.bytes,
124
+ };
125
+ }
package/dist/store.d.ts CHANGED
@@ -1,155 +1,117 @@
1
- import type { BootstrapInventory, Capability, ListedConversation, Member, ProviderLimit } from './adapter.js';
1
+ import type { TypedPath } from './adapter.js';
2
+ import { schemaTypes } from './attached-model.js';
3
+ import { type Cell } from './cell.js';
2
4
  import type { ChangeBatch } from './change.js';
3
- import { type Composition } from './collection.js';
4
- import type { Plan } from './query.js';
5
- import type { ReplicaRecord } from './replica.js';
6
- import type { Submission } from './outcome.js';
7
- import type { RoomDraftRecord, SavedDraft } from './room-draft.js';
8
- import type { ModelState, StoredModel } from './model.js';
9
- import type { SearchWindow } from './search.js';
10
- import type { CommittedWrite, ConversationWrite, CountedRoom, HeldConversation, HeldEntry, MessageWindow, QueryAnswer, QueryRoom, Referrer, RoomCommit, RuntimeDatabase, SearchAsk, StoredEntry, StoredFile, TypedEntry, View } from './tables.js';
11
- export type { ConversationWrite, HeldConversation, MessageWindow } from './tables.js';
12
- export type TransferRecord = {
13
- readonly locator: string;
14
- readonly transfer: string;
15
- readonly selection: string;
16
- readonly from: string;
17
- readonly last: string;
18
- readonly done: BootstrapInventory;
19
- readonly models: {
20
- readonly collection: ModelState;
21
- };
22
- readonly key: number | null;
5
+ import type { ChangeSet } from './change-set.js';
6
+ import type { Composition } from './collection.js';
7
+ import type { ReadinessWatch } from './preparation.js';
8
+ import type { Persistence } from './readiness.js';
9
+ import type { Listing } from './listing.js';
10
+ import type { Seeded } from './seed.js';
11
+ import type { ModelState } from './model.js';
12
+ import { type OpenedFiles } from './opened.js';
13
+ import { type HeldReplica, type ReplicaRecord } from './replica.js';
14
+ import type { RoomDraftRecord } from './room-draft.js';
15
+ import { type SyncStatus } from './status.js';
16
+ import type { RuntimeDatabase } from './tables.js';
17
+ import { type Fences } from './store/fences.js';
18
+ import { type Installs } from './store/installs.js';
19
+ import { type HeldCover, type PendingState, type RuntimeStore } from './store/records.js';
20
+ import { type ReadinessQueue } from './store/readiness.js';
21
+ import { type RoomHeld } from './store/room-held.js';
22
+ import { type Space } from './store/space.js';
23
+ import { type Watcher, type Watching } from './store/watchers.js';
24
+ import { createWrites, type InstallHold } from './store/writes.js';
25
+ export { NO_INSTALL, type RoomInstall } from './store/installs.js';
26
+ export type { AuthoredWrite, ChatDraftRecord, ChatSubmission, CoveredRoom, Facts, HeldConversation, HeldCover, PendingState, RefreshedPage, RuntimeStore, StagedPage, TransferRecord, } from './store/records.js';
27
+ export type { InstallHold } from './store/writes.js';
28
+ export type { CommittedWrite, QueryRoom, RoomCommit, RuntimeDatabase, StoredEntry, StoredFile, View, } from './tables.js';
29
+ export type Stored = {
30
+ readonly record: ReplicaRecord;
31
+ readonly indexed: boolean;
32
+ readonly documents: number;
23
33
  };
24
- export type StoredReplica = Omit<ReplicaRecord, 'model'> & {
25
- readonly model: StoredModel;
34
+ export type Held = HeldReplica & {
35
+ readonly states: ReadonlyMap<string, PendingState>;
26
36
  };
27
- export type PendingState = {
28
- readonly drafts: readonly SavedDraft[];
29
- readonly submission: Submission;
30
- readonly lost: boolean;
31
- readonly upload?: unknown;
37
+ export type Work = {
38
+ readonly replica: Held | undefined;
39
+ readonly queue: readonly ChangeBatch[];
40
+ readonly states: ReadonlyMap<string, PendingState>;
32
41
  };
33
- export type TargetRecord = {
34
- established: boolean;
42
+ type LandedAhead = Readonly<Record<string, string | undefined>>;
43
+ type AttachedFile = {
44
+ readonly revision: string;
45
+ readonly mediaType: string;
35
46
  };
36
- export type QueueRecord = {
37
- locator: string;
38
- pending: readonly {
39
- batch: ChangeBatch;
40
- state: PendingState;
41
- }[];
47
+ type Seeds = {
48
+ of(key: string): Seeded | undefined;
49
+ keep(key: string, seed: Seeded): void;
50
+ drop(key: string): void;
42
51
  };
43
- export type PresentationRecord = {
44
- app: string;
45
- value: unknown;
52
+ export type Device = {
53
+ readonly persistence: Persistence;
54
+ readonly storageLoss: string | null;
55
+ readonly heldWhenOpened: boolean;
56
+ readonly preparing: boolean;
57
+ readonly sweeping: boolean;
58
+ readonly unpreparedDemand: ReadonlySet<string>;
59
+ readonly establishing: ReadonlySet<string>;
60
+ readonly status: SyncStatus;
61
+ readonly roomsShown: Listing | null;
46
62
  };
47
- export type ChatSubmission = {
48
- readonly operation: string;
49
- readonly text: string;
50
- readonly turn: string | null;
63
+ type StoreOptions = {
64
+ readonly database: RuntimeDatabase;
65
+ readonly roomTypes: Parameters<typeof schemaTypes>[1];
66
+ readonly builtIn: ModelState;
67
+ readonly typedPaths: readonly TypedPath[];
68
+ readonly persistence: Persistence;
69
+ opening(records: RuntimeStore): Promise<RuntimeStore>;
70
+ unpublished(error: unknown): void;
71
+ changed(set: ChangeSet): Promise<void>;
72
+ deliverReadiness(owed: readonly ReadinessWatch[]): Promise<void>;
73
+ spaceFreed(): void;
51
74
  };
52
- export type ChatDraftRecord = {
53
- conversation: string;
54
- text: string;
55
- revision: string;
56
- submitted?: readonly ChatSubmission[];
57
- moves?: readonly string[];
75
+ export type Store = {
76
+ readonly device: Cell<Device>;
77
+ readonly space: Space;
78
+ readonly readiness: ReadinessQueue<ReadinessWatch>;
79
+ ask: RuntimeDatabase['ask'];
80
+ changed(set: ChangeSet): Promise<void>;
81
+ open(): Promise<RuntimeStore>;
82
+ durably<T>(work: (local: RuntimeStore) => Promise<T>): Promise<T>;
83
+ exclusive<T>(work: () => Promise<T>): Promise<T>;
84
+ gathered<I, T>(key: string, input: I, merge: (earlier: I, later: I) => I | null, work: (input: I) => Promise<T>): Promise<T>;
85
+ written(): Promise<unknown>;
86
+ startingWrite<T>(work: () => Promise<T>): Promise<T>;
87
+ finishingWrite<T>(work: () => Promise<T>): Promise<T>;
88
+ ahead<T>(work: (hold: InstallHold) => Promise<T>): Promise<T>;
89
+ rederive: ReturnType<typeof createWrites>['rederive'];
90
+ refreshPage: ReturnType<typeof createWrites>['refreshPage'];
91
+ stageBytes(): number;
92
+ deriveBytes(): number;
93
+ rooms(locators?: readonly string[]): Promise<ReadonlyMap<string, Stored>>;
94
+ record(locator: string): Promise<ReplicaRecord | undefined>;
95
+ work(locator: string): Promise<Work>;
96
+ replica(locator: string): Promise<Held | undefined>;
97
+ covering(): Promise<HeldCover>;
98
+ drafts(locator?: string, paths?: readonly string[]): Promise<readonly RoomDraftRecord[]>;
99
+ draft(locator: string, path: string): Promise<RoomDraftRecord | undefined>;
100
+ composed(record: Pick<ReplicaRecord, 'model' | 'typedSelection'>): Composition;
101
+ publication(work: () => Promise<void>): Promise<void>;
102
+ owing<T>(topic: string, add: (owed: T | undefined) => T, work: (owed: T) => Promise<void>): Promise<void>;
103
+ watch(topic: string, notify: (value: unknown) => void): Watcher;
104
+ watching(topic: string, which?: Watching): readonly Watcher[];
105
+ tell(topic: string, value: unknown): void;
106
+ readonly fences: Fences;
107
+ readonly installs: Installs;
108
+ readonly seeds: Seeds;
109
+ readonly landed: RoomHeld<LandedAhead>;
110
+ readonly attached: RoomHeld<AttachedFile>;
111
+ readonly opened: OpenedFiles;
112
+ part(file: string, part: number): Promise<Uint8Array | null>;
113
+ forget(locator: string): void;
114
+ close(): void;
58
115
  };
59
- export type CallRecord = {
60
- readonly operation: string;
61
- readonly name: string;
62
- readonly input: unknown;
63
- };
64
- export type AuthoredWrite = {
65
- locator: string;
66
- queue?: readonly ChangeBatch[];
67
- founded?: readonly ChangeBatch[];
68
- saved?: ReadonlyMap<string, readonly SavedDraft[]>;
69
- roomDrafts?: readonly RoomDraftRecord[];
70
- consumedRoomDrafts?: readonly string[];
71
- };
72
- export type StagedPage = {
73
- readonly entries: readonly StoredEntry[];
74
- readonly folders: readonly string[];
75
- };
76
- export type RefreshedPage = StagedPage & {
77
- readonly removals: readonly string[];
78
- readonly folderRemovals: readonly string[];
79
- };
80
- export type Opened = {
81
- readonly rooms: ReadonlyMap<string, StoredReplica>;
82
- readonly unindexed: ReadonlySet<number>;
83
- readonly overlaid: ReadonlyMap<number, ReadonlySet<string>>;
84
- readonly erasing: boolean;
85
- readonly orphans: readonly number[];
86
- readonly lastCompleted: string | null;
87
- readonly providerLimits: readonly ProviderLimit[];
88
- readonly capabilities: readonly Capability[];
89
- readonly member: Member | null;
90
- readonly targets: Readonly<Record<string, TargetRecord>>;
91
- readonly presentation: readonly PresentationRecord[];
92
- readonly conversationList: readonly ListedConversation[] | null;
93
- readonly conversationCursor: string | null;
94
- };
95
- export type Commit = {
96
- readonly rooms: readonly RoomCommit[];
97
- readonly writes?: readonly AuthoredWrite[];
98
- readonly files?: readonly StoredFile[];
99
- readonly whole?: boolean;
100
- readonly discards?: readonly string[];
101
- };
102
- export type RuntimeStore = {
103
- opened(): Promise<Opened>;
104
- counts(rooms: readonly CountedRoom[]): Promise<readonly number[]>;
105
- query(plan: Plan, rooms: readonly QueryRoom[], budget: number | null): Promise<QueryAnswer>;
106
- changes(keys: readonly number[]): number;
107
- entries(key: number, view: View, paths: readonly string[]): Promise<readonly HeldEntry[]>;
108
- typed(key: number, view: View, paths: readonly string[]): Promise<readonly TypedEntry[]>;
109
- referrers(key: number, view: View, targets: readonly string[], kinds: readonly string[]): Promise<readonly Referrer[]>;
110
- files(key: number, view: View, after: string | null, limit: number): Promise<readonly {
111
- readonly path: string;
112
- readonly revision: string;
113
- }[]>;
114
- folders(key: number, view: View, paths: readonly string[]): Promise<readonly string[]>;
115
- typedWithin(key: number, view: View, roots: readonly string[], within: boolean): Promise<boolean>;
116
- search(ask: SearchAsk): Promise<SearchWindow>;
117
- stage(record: TransferRecord, composition: Composition, page: StagedPage): Promise<number | null>;
118
- refresh(key: number, composition: Composition, page: RefreshedPage): Promise<void>;
119
- unrefresh(key: number): Promise<void>;
120
- commit(commit: Commit): Promise<CommittedWrite>;
121
- fence(locators: readonly string[]): Promise<void>;
122
- erase(locator: string | null, limit: number): Promise<boolean>;
123
- abandon(locator: string): Promise<void>;
124
- release(key: number): Promise<void>;
125
- rederive(key: number, composition: Composition, bytes: number, ms: number, floor: number): Promise<{
126
- readonly done: boolean;
127
- readonly text: number;
128
- }>;
129
- fact(name: string, value: unknown): Promise<void>;
130
- queues(): Promise<readonly QueueRecord[]>;
131
- submit(locator: string, id: string, submission: Submission, lost: boolean): Promise<void>;
132
- keepUpload(locator: string, id: string, upload: unknown): Promise<void>;
133
- roomDrafts(): Promise<readonly RoomDraftRecord[]>;
134
- present(record: PresentationRecord): Promise<void>;
135
- conversations(): Promise<readonly HeldConversation[]>;
136
- keepMessages(write: ConversationWrite): Promise<void>;
137
- messageWindow(conversation: string, limit: number, before: readonly [string, string] | null): Promise<MessageWindow>;
138
- messageCount(conversation: string): Promise<number>;
139
- turnArrived(conversation: string, turn: string): Promise<boolean>;
140
- dropConversations(conversations: readonly string[]): Promise<void>;
141
- chatDrafts(): Promise<readonly ChatDraftRecord[]>;
142
- keepChatDrafts(records: readonly ChatDraftRecord[]): Promise<void>;
143
- dropChatDraft(conversation: string): Promise<void>;
144
- calls(): Promise<readonly CallRecord[]>;
145
- keepCall(record: CallRecord): Promise<void>;
146
- dropCall(operation: string): Promise<void>;
147
- keepRoomDraft(record: RoomDraftRecord, files: readonly StoredFile[]): Promise<void>;
148
- discardRoomDraft(locator: string, path: string): Promise<void>;
149
- fences(): Promise<readonly string[]>;
150
- generation(): Promise<string | null>;
151
- rememberGeneration(value: string): Promise<void>;
152
- file(key: string, type: string): Promise<Blob>;
153
- };
154
- export declare function openRuntimeStore(fenced: (locator: string) => boolean, authored: RuntimeDatabase): RuntimeStore;
116
+ export declare function createStore(options: StoreOptions): Store;
155
117
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}