@agentshouse/mdruntime 0.1.0-c009335e08279 → 0.1.0-c0136de3edfbe

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 (316) hide show
  1. package/README.md +25 -12
  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 +248 -0
  8. package/dist/adapter.d.ts +246 -80
  9. package/dist/adapter.d.ts.map +1 -1
  10. package/dist/adapter.js +1 -9
  11. package/dist/attached-model.d.ts +8 -0
  12. package/dist/attached-model.d.ts.map +1 -0
  13. package/dist/attached-model.js +46 -0
  14. package/dist/attempt.d.ts +16 -0
  15. package/dist/attempt.d.ts.map +1 -0
  16. package/dist/attempt.js +70 -0
  17. package/dist/binary.d.ts +18 -0
  18. package/dist/binary.d.ts.map +1 -0
  19. package/dist/binary.js +8 -0
  20. package/dist/bootstrap.d.ts +40 -6
  21. package/dist/bootstrap.d.ts.map +1 -1
  22. package/dist/bootstrap.js +336 -51
  23. package/dist/cell.d.ts +6 -0
  24. package/dist/cell.d.ts.map +1 -0
  25. package/dist/cell.js +9 -0
  26. package/dist/chain.d.ts +12 -0
  27. package/dist/chain.d.ts.map +1 -0
  28. package/dist/chain.js +64 -0
  29. package/dist/change-set.d.ts +9 -14
  30. package/dist/change-set.d.ts.map +1 -1
  31. package/dist/change-set.js +11 -56
  32. package/dist/change.d.ts +46 -0
  33. package/dist/change.d.ts.map +1 -1
  34. package/dist/change.js +34 -0
  35. package/dist/chat-types.d.ts +3 -0
  36. package/dist/chat-types.d.ts.map +1 -0
  37. package/dist/chat-types.js +2 -0
  38. package/dist/client.d.ts +53 -18
  39. package/dist/client.d.ts.map +1 -1
  40. package/dist/client.js +162 -30
  41. package/dist/collection.d.ts +13 -14
  42. package/dist/collection.d.ts.map +1 -1
  43. package/dist/collection.js +52 -56
  44. package/dist/compile.d.ts +16 -0
  45. package/dist/compile.d.ts.map +1 -0
  46. package/dist/compile.js +717 -0
  47. package/dist/connection.d.ts +8 -106
  48. package/dist/connection.d.ts.map +1 -1
  49. package/dist/connection.js +102 -2094
  50. package/dist/context.d.ts +2 -0
  51. package/dist/context.d.ts.map +1 -0
  52. package/dist/context.js +7 -0
  53. package/dist/conversation-row.d.ts +33 -0
  54. package/dist/conversation-row.d.ts.map +1 -0
  55. package/dist/conversation-row.js +47 -0
  56. package/dist/conversation.d.ts +76 -27
  57. package/dist/conversation.d.ts.map +1 -1
  58. package/dist/conversation.js +1052 -273
  59. package/dist/digest.d.ts +7 -0
  60. package/dist/digest.d.ts.map +1 -0
  61. package/dist/digest.js +113 -0
  62. package/dist/discovery.d.ts +10 -0
  63. package/dist/discovery.d.ts.map +1 -0
  64. package/dist/discovery.js +175 -0
  65. package/dist/durability.d.ts +10 -1
  66. package/dist/durability.d.ts.map +1 -1
  67. package/dist/durability.js +5 -0
  68. package/dist/entry.d.ts +20 -0
  69. package/dist/entry.d.ts.map +1 -0
  70. package/dist/entry.js +161 -0
  71. package/dist/expectation.d.ts +21 -0
  72. package/dist/expectation.d.ts.map +1 -0
  73. package/dist/expectation.js +70 -0
  74. package/dist/failure.d.ts +13 -0
  75. package/dist/failure.d.ts.map +1 -0
  76. package/dist/failure.js +19 -0
  77. package/dist/figures.d.ts +48 -0
  78. package/dist/figures.d.ts.map +1 -0
  79. package/dist/figures.js +197 -0
  80. package/dist/file.d.ts +2 -19
  81. package/dist/file.d.ts.map +1 -1
  82. package/dist/file.js +7 -122
  83. package/dist/host.d.ts +18 -2
  84. package/dist/host.d.ts.map +1 -1
  85. package/dist/host.js +165 -51
  86. package/dist/identity.d.ts +3 -0
  87. package/dist/identity.d.ts.map +1 -1
  88. package/dist/identity.js +13 -1
  89. package/dist/index.d.ts +35 -10
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +13 -0
  92. package/dist/install.d.ts +56 -0
  93. package/dist/install.d.ts.map +1 -0
  94. package/dist/install.js +560 -0
  95. package/dist/job.d.ts +33 -0
  96. package/dist/job.d.ts.map +1 -0
  97. package/dist/job.js +54 -0
  98. package/dist/lifecycle.d.ts +7 -0
  99. package/dist/lifecycle.d.ts.map +1 -0
  100. package/dist/lifecycle.js +267 -0
  101. package/dist/listing.d.ts +53 -0
  102. package/dist/listing.d.ts.map +1 -0
  103. package/dist/listing.js +175 -0
  104. package/dist/live.d.ts +23 -0
  105. package/dist/live.d.ts.map +1 -0
  106. package/dist/live.js +165 -0
  107. package/dist/locks.d.ts +9 -0
  108. package/dist/locks.d.ts.map +1 -0
  109. package/dist/locks.js +61 -0
  110. package/dist/log.d.ts +1 -0
  111. package/dist/log.d.ts.map +1 -1
  112. package/dist/lost.d.ts +5 -0
  113. package/dist/lost.d.ts.map +1 -0
  114. package/dist/lost.js +61 -0
  115. package/dist/media.d.ts +8 -0
  116. package/dist/media.d.ts.map +1 -0
  117. package/dist/media.js +218 -0
  118. package/dist/memory.d.ts +30 -9
  119. package/dist/memory.d.ts.map +1 -1
  120. package/dist/memory.js +337 -86
  121. package/dist/messages.d.ts +52 -0
  122. package/dist/messages.d.ts.map +1 -0
  123. package/dist/messages.js +168 -0
  124. package/dist/model.d.ts +17 -16
  125. package/dist/model.d.ts.map +1 -1
  126. package/dist/model.js +9 -9
  127. package/dist/models.d.ts +14 -0
  128. package/dist/models.d.ts.map +1 -0
  129. package/dist/models.js +193 -0
  130. package/dist/name.d.ts +4 -0
  131. package/dist/name.d.ts.map +1 -0
  132. package/dist/name.js +122 -0
  133. package/dist/observation.d.ts +22 -2
  134. package/dist/observation.d.ts.map +1 -1
  135. package/dist/observation.js +133 -17
  136. package/dist/open.d.ts +2 -0
  137. package/dist/open.d.ts.map +1 -0
  138. package/dist/open.js +1 -0
  139. package/dist/opened.d.ts +22 -0
  140. package/dist/opened.d.ts.map +1 -0
  141. package/dist/opened.js +107 -0
  142. package/dist/opening.d.ts +4 -0
  143. package/dist/opening.d.ts.map +1 -0
  144. package/dist/opening.js +56 -0
  145. package/dist/outcome.d.ts +73 -5
  146. package/dist/outcome.d.ts.map +1 -1
  147. package/dist/outcome.js +84 -1
  148. package/dist/overlay.d.ts +16 -5
  149. package/dist/overlay.d.ts.map +1 -1
  150. package/dist/overlay.js +147 -180
  151. package/dist/parts.d.ts +59 -0
  152. package/dist/parts.d.ts.map +1 -0
  153. package/dist/parts.js +118 -0
  154. package/dist/paths.d.ts +1 -1
  155. package/dist/paths.d.ts.map +1 -1
  156. package/dist/paths.js +4 -16
  157. package/dist/preparation.d.ts +20 -0
  158. package/dist/preparation.d.ts.map +1 -0
  159. package/dist/preparation.js +226 -0
  160. package/dist/queries.d.ts +16 -0
  161. package/dist/queries.d.ts.map +1 -0
  162. package/dist/queries.js +272 -0
  163. package/dist/query.d.ts +56 -180
  164. package/dist/query.d.ts.map +1 -1
  165. package/dist/query.js +3 -422
  166. package/dist/questions.d.ts +32 -0
  167. package/dist/questions.d.ts.map +1 -0
  168. package/dist/questions.js +118 -0
  169. package/dist/reach.d.ts +56 -0
  170. package/dist/reach.d.ts.map +1 -0
  171. package/dist/reach.js +494 -0
  172. package/dist/react.d.ts +47 -0
  173. package/dist/react.d.ts.map +1 -0
  174. package/dist/react.js +54 -0
  175. package/dist/read.d.ts +7 -0
  176. package/dist/read.d.ts.map +1 -0
  177. package/dist/read.js +17 -0
  178. package/dist/readiness.d.ts +50 -0
  179. package/dist/readiness.d.ts.map +1 -0
  180. package/dist/readiness.js +27 -0
  181. package/dist/reads.d.ts +36 -0
  182. package/dist/reads.d.ts.map +1 -0
  183. package/dist/reads.js +136 -0
  184. package/dist/recovery.d.ts +26 -0
  185. package/dist/recovery.d.ts.map +1 -0
  186. package/dist/recovery.js +232 -0
  187. package/dist/refresh.d.ts +21 -7
  188. package/dist/refresh.d.ts.map +1 -1
  189. package/dist/refresh.js +155 -55
  190. package/dist/refusal.d.ts +5 -0
  191. package/dist/refusal.d.ts.map +1 -0
  192. package/dist/refusal.js +56 -0
  193. package/dist/replica.d.ts +58 -33
  194. package/dist/replica.d.ts.map +1 -1
  195. package/dist/replica.js +355 -158
  196. package/dist/room-draft.d.ts +62 -11
  197. package/dist/room-draft.d.ts.map +1 -1
  198. package/dist/room-draft.js +281 -83
  199. package/dist/room-drafts.d.ts +24 -0
  200. package/dist/room-drafts.d.ts.map +1 -0
  201. package/dist/room-drafts.js +216 -0
  202. package/dist/rows.d.ts +32 -34
  203. package/dist/rows.d.ts.map +1 -1
  204. package/dist/rows.js +65 -87
  205. package/dist/runtime.d.ts +42 -0
  206. package/dist/runtime.d.ts.map +1 -0
  207. package/dist/runtime.js +1 -0
  208. package/dist/save.d.ts +74 -6
  209. package/dist/save.d.ts.map +1 -1
  210. package/dist/save.js +902 -182
  211. package/dist/saves.d.ts +70 -0
  212. package/dist/saves.d.ts.map +1 -0
  213. package/dist/saves.js +1004 -0
  214. package/dist/search.d.ts +15 -54
  215. package/dist/search.d.ts.map +1 -1
  216. package/dist/search.js +10 -121
  217. package/dist/seed.d.ts +25 -0
  218. package/dist/seed.d.ts.map +1 -0
  219. package/dist/seed.js +146 -0
  220. package/dist/shared.d.ts +15 -0
  221. package/dist/shared.d.ts.map +1 -0
  222. package/dist/shared.js +421 -0
  223. package/dist/shown.d.ts +31 -0
  224. package/dist/shown.d.ts.map +1 -0
  225. package/dist/shown.js +294 -0
  226. package/dist/socket/admission.d.ts +7 -0
  227. package/dist/socket/admission.d.ts.map +1 -0
  228. package/dist/socket/admission.js +39 -0
  229. package/dist/socket/answers.d.ts +6 -0
  230. package/dist/socket/answers.d.ts.map +1 -0
  231. package/dist/socket/answers.js +20 -0
  232. package/dist/socket/lanes.d.ts +20 -0
  233. package/dist/socket/lanes.d.ts.map +1 -0
  234. package/dist/socket/lanes.js +77 -0
  235. package/dist/socket/reads.d.ts +10 -0
  236. package/dist/socket/reads.d.ts.map +1 -0
  237. package/dist/socket/reads.js +31 -0
  238. package/dist/socket/rooms.d.ts +43 -0
  239. package/dist/socket/rooms.d.ts.map +1 -0
  240. package/dist/socket/rooms.js +90 -0
  241. package/dist/socket/session.d.ts +39 -0
  242. package/dist/socket/session.d.ts.map +1 -0
  243. package/dist/socket/session.js +23 -0
  244. package/dist/socket.d.ts +70 -0
  245. package/dist/socket.d.ts.map +1 -0
  246. package/dist/socket.js +175 -0
  247. package/dist/source.d.ts +61 -0
  248. package/dist/source.d.ts.map +1 -0
  249. package/dist/source.js +81 -0
  250. package/dist/status.d.ts +7 -4
  251. package/dist/status.d.ts.map +1 -1
  252. package/dist/status.js +3 -15
  253. package/dist/store/fences.d.ts +16 -0
  254. package/dist/store/fences.d.ts.map +1 -0
  255. package/dist/store/fences.js +26 -0
  256. package/dist/store/installs.d.ts +30 -0
  257. package/dist/store/installs.d.ts.map +1 -0
  258. package/dist/store/installs.js +34 -0
  259. package/dist/store/readiness.d.ts +10 -0
  260. package/dist/store/readiness.d.ts.map +1 -0
  261. package/dist/store/readiness.js +52 -0
  262. package/dist/store/records.d.ts +212 -0
  263. package/dist/store/records.d.ts.map +1 -0
  264. package/dist/store/records.js +408 -0
  265. package/dist/store/room-held.d.ts +8 -0
  266. package/dist/store/room-held.d.ts.map +1 -0
  267. package/dist/store/room-held.js +17 -0
  268. package/dist/store/space.d.ts +11 -0
  269. package/dist/store/space.d.ts.map +1 -0
  270. package/dist/store/space.js +43 -0
  271. package/dist/store/watchers.d.ts +17 -0
  272. package/dist/store/watchers.d.ts.map +1 -0
  273. package/dist/store/watchers.js +57 -0
  274. package/dist/store/writes.d.ts +24 -0
  275. package/dist/store/writes.d.ts.map +1 -0
  276. package/dist/store/writes.js +125 -0
  277. package/dist/store.d.ts +106 -93
  278. package/dist/store.d.ts.map +1 -1
  279. package/dist/store.js +142 -385
  280. package/dist/stored.d.ts +156 -0
  281. package/dist/stored.d.ts.map +1 -0
  282. package/dist/stored.js +637 -0
  283. package/dist/surface.d.ts +86 -0
  284. package/dist/surface.d.ts.map +1 -0
  285. package/dist/surface.js +217 -0
  286. package/dist/sync.d.ts +20 -0
  287. package/dist/sync.d.ts.map +1 -0
  288. package/dist/sync.js +531 -0
  289. package/dist/tables.d.ts +407 -0
  290. package/dist/tables.d.ts.map +1 -0
  291. package/dist/tables.js +724 -0
  292. package/dist/tallies.d.ts +18 -0
  293. package/dist/tallies.d.ts.map +1 -0
  294. package/dist/tallies.js +129 -0
  295. package/dist/transfer.d.ts +0 -5
  296. package/dist/transfer.d.ts.map +1 -1
  297. package/dist/turn.d.ts +9 -0
  298. package/dist/turn.d.ts.map +1 -0
  299. package/dist/turn.js +75 -0
  300. package/dist/validation.d.ts +29 -0
  301. package/dist/validation.d.ts.map +1 -0
  302. package/dist/validation.js +104 -0
  303. package/dist/windows.d.ts +11 -0
  304. package/dist/windows.d.ts.map +1 -0
  305. package/dist/windows.js +16 -0
  306. package/dist/wire.d.ts +206 -20
  307. package/dist/wire.d.ts.map +1 -1
  308. package/dist/wire.js +95 -61
  309. package/package.json +33 -10
  310. package/AGENTS.md +0 -208
  311. package/dist/attachment.d.ts +0 -3
  312. package/dist/attachment.d.ts.map +0 -1
  313. package/dist/attachment.js +0 -8
  314. package/dist/read-side.d.ts +0 -14
  315. package/dist/read-side.d.ts.map +0 -1
  316. package/dist/read-side.js +0 -371
@@ -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,104 +1,117 @@
1
- import type { ModelState } from './model.js';
2
- import type { Capability, HeadChange, OperationScopes, ProviderLimit, ReplicaAdmission, RoomAttachment, TypedSelection } from './adapter.js';
3
- import type { AcceptedMessage } from './adapter.js';
1
+ import type { TypedPath } from './adapter.js';
2
+ import { schemaTypes } from './attached-model.js';
3
+ import { type Cell } from './cell.js';
4
4
  import type { ChangeBatch } from './change.js';
5
- import type { ChatDraftFile } from './file.js';
6
- import type { Submission } from './outcome.js';
7
- import type { RoomDraftRecord, SavedDraft } from './room-draft.js';
8
- export type ReplicaRecord = {
9
- locator: string;
10
- name: string;
11
- operations: OperationScopes;
12
- replica: ReplicaAdmission;
13
- model: ModelState;
14
- attachedModel: import('./model.js').ModelIdentity | null;
15
- typedSelection: TypedSelection | null;
16
- selectionModel: ModelState;
17
- providerOwnedPaths: readonly string[];
18
- roomVersion: string;
19
- documents: Readonly<Record<string, string>>;
20
- binaryTargets: readonly string[];
21
- revisions: Readonly<Record<string, string>>;
22
- changes: Readonly<Record<string, HeadChange>>;
23
- written: Readonly<Record<string, string>>;
24
- attachments: readonly RoomAttachment[];
25
- };
26
- export type PendingState = {
27
- readonly drafts: readonly SavedDraft[];
28
- readonly submission: Submission;
29
- readonly lost: boolean;
30
- readonly upload?: unknown;
31
- readonly accepted?: string;
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;
32
33
  };
33
- export type QueueRecord = {
34
- locator: string;
35
- pending: readonly {
36
- batch: ChangeBatch;
37
- state: PendingState;
38
- }[];
34
+ export type Held = HeldReplica & {
35
+ readonly states: ReadonlyMap<string, PendingState>;
39
36
  };
40
- export type PresentationRecord = {
41
- app: string;
42
- value: unknown;
37
+ export type Work = {
38
+ readonly replica: Held | undefined;
39
+ readonly queue: readonly ChangeBatch[];
40
+ readonly states: ReadonlyMap<string, PendingState>;
43
41
  };
44
- export type HeldConversation = {
45
- conversation: string;
46
- read: string | null | undefined;
47
- messages: readonly AcceptedMessage[];
42
+ type LandedAhead = Readonly<Record<string, string | undefined>>;
43
+ type AttachedFile = {
44
+ readonly revision: string;
45
+ readonly mediaType: string;
48
46
  };
49
- export type ConversationWrite = {
50
- conversation: string;
51
- messages: readonly AcceptedMessage[];
52
- read?: string | null;
53
- sealed?: boolean;
47
+ type Seeds = {
48
+ of(key: string): Seeded | undefined;
49
+ keep(key: string, seed: Seeded): void;
50
+ drop(key: string): void;
54
51
  };
55
- export type ChatDraftRecord = {
56
- conversation: string;
57
- text: string;
58
- files: readonly ChatDraftFile[];
59
- turn: string | null;
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;
60
62
  };
61
- export type RecordWrite = {
62
- next: ReplicaRecord;
63
- previous: ReplicaRecord | null;
64
- queue: readonly ChangeBatch[];
65
- previousQueue?: readonly ChangeBatch[];
66
- saved?: readonly SavedDraft[];
67
- roomDrafts?: readonly RoomDraftRecord[];
68
- consumedRoomDrafts?: readonly string[];
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;
69
74
  };
70
- export type RuntimeStore = {
71
- all(): Promise<readonly ReplicaRecord[]>;
72
- write(input: RecordWrite): Promise<void>;
73
- revokeModels(records: readonly {
74
- record: ReplicaRecord;
75
- queue: readonly ChangeBatch[];
76
- }[]): Promise<void>;
77
- lastCompleted(): Promise<string | null>;
78
- complete(at: string): Promise<void>;
79
- providerLimits(): Promise<readonly ProviderLimit[]>;
80
- capabilities(): Promise<readonly Capability[]>;
81
- declare(limits: readonly ProviderLimit[], capabilities: readonly Capability[]): Promise<void>;
82
- queues(): Promise<readonly QueueRecord[]>;
83
- submit(locator: string, id: string, submission: Submission, lost: boolean): Promise<void>;
84
- accept(locator: string, id: string, roomVersion: string): Promise<void>;
85
- keepUpload(locator: string, id: string, upload: unknown): Promise<void>;
86
- roomDrafts(): Promise<readonly RoomDraftRecord[]>;
87
- presentation(): Promise<readonly PresentationRecord[]>;
88
- present(record: PresentationRecord): Promise<void>;
89
- conversations(): Promise<readonly HeldConversation[]>;
90
- keepMessages(write: ConversationWrite): Promise<void>;
91
- dropConversations(conversations: readonly string[]): Promise<void>;
92
- chatDrafts(): Promise<readonly ChatDraftRecord[]>;
93
- keepChatDraft(record: ChatDraftRecord): Promise<void>;
94
- dropChatDraft(conversation: string): Promise<void>;
95
- keepRoomDraft(record: RoomDraftRecord): Promise<void>;
96
- discardRoomDraft(locator: string, path: string): Promise<void>;
97
- dropRooms(locators: readonly string[]): Promise<void>;
98
- generation(): Promise<string | null>;
99
- rememberGeneration(value: string): Promise<void>;
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;
100
114
  close(): void;
101
115
  };
102
- export declare function removeRuntimeStore(): Promise<void>;
103
- export declare function openRuntimeStore(): Promise<RuntimeStore>;
116
+ export declare function createStore(options: StoreOptions): Store;
104
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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"}