@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
@@ -0,0 +1,37 @@
1
+ import { type CallResult } from './outcome.js';
2
+ import type { Recovery } from './recovery.js';
3
+ import type { Connection, RuntimeDatabase } from './tables.js';
4
+ export declare const READ_TABLES: readonly string[];
5
+ export type ReadAt = {
6
+ readonly name: string;
7
+ readonly input: string;
8
+ readonly build: string;
9
+ };
10
+ export type ObservedRead = {
11
+ readonly answer: unknown;
12
+ readonly failure: CallResult | null;
13
+ readonly kept: boolean;
14
+ };
15
+ export type ReadAnswers = {
16
+ watch(name: string, input: unknown, deliver: (read: ObservedRead) => void): () => void;
17
+ again(): void;
18
+ reopened(): void;
19
+ };
20
+ export type ReadAnswersOptions = {
21
+ readonly database: RuntimeDatabase;
22
+ readonly build: string;
23
+ readonly unkept: readonly string[];
24
+ readonly leading: readonly string[];
25
+ readonly recovery: Recovery;
26
+ call(name: string, input: unknown): Promise<CallResult>;
27
+ online(): boolean;
28
+ streaming(): boolean;
29
+ closed(): boolean;
30
+ full(): boolean;
31
+ filled(): void;
32
+ };
33
+ export declare function storedRead(connection: Connection, { name, input, build }: ReadAt): string | null;
34
+ export declare function keptRead(connection: Connection, { name, input, build }: ReadAt, answer: string): null;
35
+ export declare function readsOfOtherBuildsForgotten(connection: Connection, build: string): null;
36
+ export declare function readAnswers(options: ReadAnswersOptions): ReadAnswers;
37
+ //# sourceMappingURL=reads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reads.d.ts","sourceRoot":"","sources":["../src/reads.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE/D,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAExC,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACvF,KAAK,IAAI,IAAI,CAAC;IACd,QAAQ,IAAI,IAAI,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,IAAI,OAAO,CAAC;IAClB,SAAS,IAAI,OAAO,CAAC;IACrB,MAAM,IAAI,OAAO,CAAC;IAClB,IAAI,IAAI,OAAO,CAAC;IAChB,MAAM,IAAI,IAAI,CAAC;CAChB,CAAC;AAeF,wBAAgB,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMhG;AAED,wBAAgB,QAAQ,CACtB,UAAU,EAAE,UAAU,EACtB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,MAAM,EAC9B,MAAM,EAAE,MAAM,GACb,IAAI,CAMN;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAGvF;AAMD,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAsJpE"}
package/dist/reads.js ADDED
@@ -0,0 +1,171 @@
1
+ import { refusedForSpace } from './durability.js';
2
+ import { answeredResult, UNCERTAIN } from './outcome.js';
3
+ export const READ_TABLES = [
4
+ 'CREATE TABLE read_answers (name TEXT NOT NULL, input TEXT NOT NULL, build TEXT NOT NULL, answer TEXT NOT NULL, PRIMARY KEY (name, input)) WITHOUT ROWID',
5
+ ];
6
+ export function storedRead(connection, { name, input, build }) {
7
+ const [held] = connection.rows('SELECT answer FROM read_answers WHERE name = ? AND input = ? AND build = ?', [name, input, build]);
8
+ return held === undefined ? null : String(held.answer);
9
+ }
10
+ export function keptRead(connection, { name, input, build }, answer) {
11
+ connection.run('INSERT OR REPLACE INTO read_answers (name, input, build, answer) VALUES (?, ?, ?, ?)', [name, input, build, answer]);
12
+ return null;
13
+ }
14
+ export function readsOfOtherBuildsForgotten(connection, build) {
15
+ connection.run('DELETE FROM read_answers WHERE build <> ?', [build]);
16
+ return null;
17
+ }
18
+ function answered(result) {
19
+ return result.kind === 'action' && answeredResult(result.result);
20
+ }
21
+ export function readAnswers(options) {
22
+ const { database, build, recovery } = options;
23
+ const unkept = new Set(options.unkept);
24
+ const leading = new Set(options.leading);
25
+ const reads = new Map();
26
+ function leads(read) {
27
+ return leading.has(read.at.name);
28
+ }
29
+ function show(read, shown) {
30
+ read.shown = shown;
31
+ for (const deliver of read.observers)
32
+ deliver(shown);
33
+ }
34
+ async function kept(read, answer) {
35
+ if (!read.shown.kept || options.full())
36
+ return;
37
+ await database.ask({ kind: 'read.keep', ...read.at, answer }).catch((error) => {
38
+ if (refusedForSpace(error))
39
+ options.filled();
40
+ });
41
+ }
42
+ async function asked(read, led) {
43
+ if (!options.online()) {
44
+ read.owed = true;
45
+ return;
46
+ }
47
+ const result = await options.call(read.at.name, read.asked).catch(() => UNCERTAIN);
48
+ if (options.closed())
49
+ return;
50
+ read.owed = !answered(result);
51
+ if (read.owed) {
52
+ show(read, { ...read.shown, failure: result });
53
+ return;
54
+ }
55
+ const answer = result.result;
56
+ const text = JSON.stringify(answer);
57
+ if (text === read.text && read.shown.failure === null)
58
+ return;
59
+ read.text = text;
60
+ await kept(read, text);
61
+ await led;
62
+ if (!options.closed())
63
+ show(read, { ...read.shown, answer, failure: null });
64
+ }
65
+ function lost(read) {
66
+ return read.owed && read.shown.failure?.kind === 'transport-uncertainty' && options.streaming();
67
+ }
68
+ function retrying(read) {
69
+ return `${read.key} again`;
70
+ }
71
+ function askedLater(read) {
72
+ void recovery.attempt(retrying(read), async () => {
73
+ if (options.closed() || read.observers.size === 0 || !lost(read))
74
+ return 'done';
75
+ await attempted(read);
76
+ return lost(read) ? 'again' : 'done';
77
+ }, { again: true });
78
+ }
79
+ function forgotten(read) {
80
+ read.text = null;
81
+ read.shown = { ...read.shown, answer: null, failure: null };
82
+ }
83
+ function attempted(read, led) {
84
+ read.asking = true;
85
+ return recovery
86
+ .attempt(read.key, async () => {
87
+ await asked(read, led);
88
+ return 'done';
89
+ })
90
+ .finally(() => {
91
+ const unanswered = read.joined && read.owed;
92
+ read.asking = false;
93
+ read.joined = false;
94
+ if (unanswered)
95
+ void ask(read);
96
+ });
97
+ }
98
+ function ask(read, led) {
99
+ return attempted(read, led).finally(() => {
100
+ if (lost(read))
101
+ askedLater(read);
102
+ });
103
+ }
104
+ function opened(name, input, key) {
105
+ const held = !unkept.has(name);
106
+ const read = {
107
+ key,
108
+ at: { name, input: JSON.stringify(input ?? null), build },
109
+ asked: input,
110
+ observers: new Set(),
111
+ stored: Promise.resolve(),
112
+ text: null,
113
+ shown: { answer: null, failure: null, kept: held },
114
+ owed: false,
115
+ asking: false,
116
+ joined: false,
117
+ };
118
+ if (held) {
119
+ read.stored = database.ask({ kind: 'read.stored', ...read.at }).then((text) => {
120
+ if (text === null || read.text !== null)
121
+ return;
122
+ read.text = text;
123
+ read.shown = { ...read.shown, answer: JSON.parse(text) };
124
+ }, () => { });
125
+ }
126
+ reads.set(key, read);
127
+ return read;
128
+ }
129
+ return {
130
+ watch(name, input, deliver) {
131
+ const key = JSON.stringify([name, input ?? null]);
132
+ const read = reads.get(key) ?? opened(name, input, key);
133
+ read.observers.add(deliver);
134
+ void read.stored.then(() => {
135
+ if (!read.observers.has(deliver))
136
+ return;
137
+ if (!read.shown.kept)
138
+ forgotten(read);
139
+ deliver(read.shown);
140
+ if (read.asking)
141
+ read.joined = true;
142
+ else
143
+ void ask(read);
144
+ });
145
+ return () => {
146
+ read.observers.delete(deliver);
147
+ if (read.observers.size === 0 && reads.get(key) === read)
148
+ reads.delete(key);
149
+ };
150
+ },
151
+ again() {
152
+ const all = [...reads.values()];
153
+ const led = Promise.all(all.filter(leads).map((read) => ask(read)));
154
+ for (const read of all)
155
+ if (!leads(read))
156
+ void ask(read, led);
157
+ },
158
+ reopened() {
159
+ for (const read of reads.values()) {
160
+ recovery.cancel(retrying(read));
161
+ if (read.text === null) {
162
+ if (read.owed)
163
+ void ask(read);
164
+ }
165
+ else if (read.shown.failure?.kind === 'transport-uncertainty') {
166
+ show(read, { ...read.shown, failure: null });
167
+ }
168
+ }
169
+ },
170
+ };
171
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,MAAM,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;AAElE,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEhF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClF,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,MAAM,IAAI,IAAI,CAAC;IACf,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IACnC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB,CAAC;AAsBF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,SAAW,EAAE,KAAK,SAAS,GAAG,MAAM,CAGpF;AAED,wBAAsB,aAAa,CAAC,CAAC,EACnC,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACrB,MAAM,EAAE,WAAW,EACnB,QAAQ,GAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAoB,GAC5C,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAwKD,wBAAgB,cAAc,CAAC,OAAO,GAAE,eAAoB,GAAG,QAAQ,CAStE"}
1
+ {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,MAAM,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;AAElE,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEhF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClF,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,MAAM,IAAI,IAAI,CAAC;IACf,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IACnC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB,CAAC;AAsBF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,SAAW,EAAE,KAAK,SAAS,GAAG,MAAM,CAGpF;AAED,wBAAsB,aAAa,CAAC,CAAC,EACnC,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACrB,MAAM,EAAE,WAAW,EACnB,QAAQ,GAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAoB,GAC5C,OAAO,CAAC,CAAC,CAAC,CAsBZ;AA8KD,wBAAgB,cAAc,CAAC,OAAO,GAAE,eAAoB,GAAG,QAAQ,CAStE"}
package/dist/recovery.js CHANGED
@@ -106,7 +106,15 @@ function owner(backoff, inFlight, release = () => { }) {
106
106
  }
107
107
  intent.tries += 1;
108
108
  if (intent.tries >= backoff.attempts) {
109
- finish(key, intent, false);
109
+ if (again === null) {
110
+ finish(key, intent, false);
111
+ return;
112
+ }
113
+ intent.tries = 0;
114
+ if (again === 'now')
115
+ launch(key, intent);
116
+ else
117
+ wait(key, intent, again, true);
110
118
  return;
111
119
  }
112
120
  if (result === 'again') {
package/dist/refresh.d.ts CHANGED
@@ -20,7 +20,7 @@ export type Refreshing = {
20
20
  later(paths: readonly string[], roomVersion: string): Promise<ReadonlySet<string>>;
21
21
  stage(page: RefreshedPage): Promise<boolean>;
22
22
  };
23
- type PageContent = Pick<RefreshPage, 'documents' | 'outlines' | 'revisions' | 'fileIds' | 'changes' | 'binaryFiles'>;
23
+ type PageContent = Pick<RefreshPage, 'documents' | 'facts' | 'revisions' | 'fileIds' | 'created' | 'changes' | 'binaryFiles'>;
24
24
  export declare function pageEntries(page: PageContent, removals: readonly string[], roomVersion: string, prior: (paths: readonly string[]) => Promise<ReadonlyMap<string, HeldEntry>>): Promise<StoredEntry[]>;
25
25
  export declare function advancement(refresh: Refresher, authorization: Authorization, held: ReplicaRecord, remodel: Remodel, continuing: () => boolean, staging: Refreshing): Promise<Advancement>;
26
26
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../src/refresh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,cAAc,EACd,aAAa,EACb,gBAAgB,EACjB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAG9D,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B,gBAAgB,GAChB,WAAW,GACX,cAAc,CAAC;AAEnB,MAAM,MAAM,SAAS,GAAG,CACtB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,cAAc,KACpB,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACzE,KAAK,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IACnF,KAAK,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9C,CAAC;AAUF,KAAK,WAAW,GAAG,IAAI,CACrB,WAAW,EACX,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAC/E,CAAC;AAoGF,wBAAsB,WAAW,CAC/B,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GAC3E,OAAO,CAAC,WAAW,EAAE,CAAC,CAKxB;AAgDD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,SAAS,EAClB,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,OAAO,EACzB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,WAAW,CAAC,CA8CtB"}
1
+ {"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../src/refresh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,cAAc,EACd,aAAa,EACb,gBAAgB,EACjB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAG9D,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B,gBAAgB,GAChB,WAAW,GACX,cAAc,CAAC;AAEnB,MAAM,MAAM,SAAS,GAAG,CACtB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,cAAc,KACpB,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACzE,KAAK,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IACnF,KAAK,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9C,CAAC;AASF,KAAK,WAAW,GAAG,IAAI,CACrB,WAAW,EACX,WAAW,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CACxF,CAAC;AAwFF,wBAAsB,WAAW,CAC/B,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GAC3E,OAAO,CAAC,WAAW,EAAE,CAAC,CAKxB;AAgDD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,SAAS,EAClB,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,OAAO,EACzB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,WAAW,CAAC,CA8CtB"}
package/dist/refresh.js CHANGED
@@ -7,13 +7,11 @@ function* listing(page, removals) {
7
7
  yield ROW_WEIGHT;
8
8
  }
9
9
  const documents = [];
10
- const outlined = [];
11
10
  const binaries = [];
12
11
  const asked = [];
13
12
  const written = new Set();
14
13
  for (const [kept, named] of [
15
14
  [documents, page.documents],
16
- [outlined, page.outlines ?? {}],
17
15
  [binaries, page.binaryFiles],
18
16
  ]) {
19
17
  for (const path of Object.keys(named)) {
@@ -38,7 +36,7 @@ function* listing(page, removals) {
38
36
  others.push(path);
39
37
  }
40
38
  }
41
- return { documents, outlined, binaries, others, asked: [...asked, ...others] };
39
+ return { documents, binaries, others, asked: [...asked, ...others] };
42
40
  }
43
41
  function* entering(page, roomVersion, listed, prior) {
44
42
  const entries = [];
@@ -47,23 +45,11 @@ function* entering(page, roomVersion, listed, prior) {
47
45
  entries.push({
48
46
  path,
49
47
  content: page.documents[path],
50
- outline: null,
51
- binary: null,
52
- revision: page.revisions[path] ?? prior.get(path)?.revision ?? null,
53
- fileId: page.fileIds?.[path] ?? null,
54
- change: page.changes[path] ?? null,
55
- written: roomVersion,
56
- });
57
- }
58
- for (const path of listed.outlined) {
59
- yield ROW_WEIGHT;
60
- entries.push({
61
- path,
62
- content: null,
63
- outline: page.outlines[path],
48
+ facts: page.facts[path] ?? null,
64
49
  binary: null,
65
50
  revision: page.revisions[path] ?? prior.get(path)?.revision ?? null,
66
51
  fileId: page.fileIds?.[path] ?? null,
52
+ created: page.created?.[path] ?? null,
67
53
  change: page.changes[path] ?? null,
68
54
  written: roomVersion,
69
55
  });
@@ -73,10 +59,11 @@ function* entering(page, roomVersion, listed, prior) {
73
59
  entries.push({
74
60
  path,
75
61
  content: null,
76
- outline: null,
62
+ facts: null,
77
63
  binary: { state: 'accepted', ...page.binaryFiles[path] },
78
64
  revision: page.revisions[path] ?? prior.get(path)?.revision ?? null,
79
65
  fileId: page.fileIds?.[path] ?? null,
66
+ created: page.created?.[path] ?? null,
80
67
  change: page.changes[path] ?? null,
81
68
  written: null,
82
69
  });
@@ -91,6 +78,7 @@ function* entering(page, roomVersion, listed, prior) {
91
78
  ...kept,
92
79
  revision: page.revisions[path] ?? held.revision,
93
80
  fileId: page.fileIds?.[path] ?? held.fileId,
81
+ created: page.created?.[path] ?? held.created,
94
82
  change: page.changes[path] ?? held.change,
95
83
  });
96
84
  }
@@ -111,9 +99,10 @@ function unwritten(page, kept) {
111
99
  return {
112
100
  ...page,
113
101
  documents: without(page.documents, kept),
114
- ...(page.outlines === undefined ? {} : { outlines: without(page.outlines, kept) }),
102
+ facts: without(page.facts, kept),
115
103
  revisions: without(page.revisions, kept),
116
104
  ...(page.fileIds === undefined ? {} : { fileIds: without(page.fileIds, kept) }),
105
+ ...(page.created === undefined ? {} : { created: without(page.created, kept) }),
117
106
  changes: without(page.changes, kept),
118
107
  binaryFiles: without(page.binaryFiles, kept),
119
108
  removals: page.removals.filter((path) => !kept.has(path)),
@@ -122,7 +111,6 @@ function unwritten(page, kept) {
122
111
  async function pageOf(answered, roomVersion, staging) {
123
112
  const page = unwritten(answered, await staging.later([
124
113
  ...Object.keys(answered.documents),
125
- ...Object.keys(answered.outlines ?? {}),
126
114
  ...Object.keys(answered.binaryFiles),
127
115
  ...answered.removals,
128
116
  ], roomVersion));
@@ -0,0 +1,5 @@
1
+ import type { ProviderRefusal } from './adapter.js';
2
+ import type { Runtime } from './runtime.js';
3
+ import type { RefusalReason } from './socket.js';
4
+ export declare function refuse(runtime: Runtime, reason: RefusalReason, provider?: ProviderRefusal | null): Promise<void>;
5
+ //# sourceMappingURL=refusal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refusal.d.ts","sourceRoot":"","sources":["../src/refusal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAOpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,wBAAsB,MAAM,CAC1B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,aAAa,EACrB,QAAQ,GAAE,eAAe,GAAG,IAAW,iBAmDxC"}
@@ -0,0 +1,56 @@
1
+ import { changeSet, mergeChangeSets } from './change-set.js';
2
+ import { composedOf } from './collection.js';
3
+ import { listedLocators } from './listing.js';
4
+ import { prepare } from './preparation.js';
5
+ import { storedRecord } from './replica.js';
6
+ import { emitRefusal } from './shown.js';
7
+ export async function refuse(runtime, reason, provider = null) {
8
+ const { store, socket, journal } = runtime;
9
+ socket.session.set({ paused: true });
10
+ socket.abortReads();
11
+ try {
12
+ if (reason === 'revoked-authorization') {
13
+ await store.exclusive(async () => {
14
+ const revoked = { status: 'unavailable', reason: 'revoked' };
15
+ let held = new Map();
16
+ try {
17
+ const local = await store.open();
18
+ held = await store.rooms();
19
+ await local.commit({
20
+ rooms: [...held.values()].map(({ record: kept }) => {
21
+ const record = { ...kept, model: revoked };
22
+ return {
23
+ locator: record.locator,
24
+ key: record.key,
25
+ record: storedRecord(record),
26
+ composed: composedOf(store.composed(record)),
27
+ };
28
+ }),
29
+ });
30
+ }
31
+ catch {
32
+ journal.record('model revocation persistence failed');
33
+ }
34
+ const listedNow = listedLocators(runtime, held);
35
+ for (const locator of listedNow) {
36
+ if (!held.has(locator))
37
+ socket.rooms.stand(locator, { unheldModel: revoked });
38
+ }
39
+ store.changed(mergeChangeSets(listedNow.map((locator) => changeSet(locator, { documents: null, room: true }))));
40
+ prepare(runtime);
41
+ });
42
+ }
43
+ }
44
+ finally {
45
+ socket.session.set({
46
+ refusal: {
47
+ code: reason,
48
+ retryable: false,
49
+ reauthorizationOffered: reason === 'revoked-authorization',
50
+ refusal: provider,
51
+ },
52
+ });
53
+ journal.record(`connection refused ${reason}`);
54
+ emitRefusal(runtime);
55
+ }
56
+ }
package/dist/replica.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type TypedPath } from '@agentshouse/mdmodel';
2
- import type { BootstrapInventory, MutationResult, OperationScopes, ReplicaAdmission, TypedSelection } from './adapter.js';
2
+ import type { BootstrapInventory, SavedFacts, MutationResult, OperationScopes, ReplicaAdmission, TypedSelection } from './adapter.js';
3
3
  import { type ChangeBatch, type Precondition } from './change.js';
4
4
  import { type Collection, type Composition } from './collection.js';
5
5
  import { type ModelState } from './model.js';
@@ -14,6 +14,7 @@ export type ReplicaRecord = {
14
14
  readonly model: ModelState;
15
15
  readonly typedSelection: TypedSelection | null;
16
16
  readonly providerOwnedPaths: readonly string[];
17
+ readonly authoredPaths?: readonly string[];
17
18
  readonly roomVersion: string;
18
19
  readonly transfer: string;
19
20
  readonly inventory: BootstrapInventory;
@@ -23,23 +24,22 @@ export type HeldReplica = {
23
24
  readonly record: ReplicaRecord;
24
25
  readonly queue: readonly ChangeBatch[];
25
26
  readonly overlaid: ReadonlySet<string>;
26
- readonly count: number;
27
- readonly confirmed: number;
28
- readonly indexed: boolean;
29
27
  };
30
28
  export type VisibleLayer = Layer & {
31
29
  readonly collection: Collection;
32
30
  };
33
31
  export type Slice = Layer & {
34
32
  readonly written: Readonly<Record<string, string>>;
33
+ readonly facts: Readonly<Record<string, SavedFacts>>;
35
34
  readonly held: ReadonlySet<string>;
36
35
  };
37
36
  export declare function compositionOf(record: Pick<ReplicaRecord, 'model' | 'typedSelection'>, builtIn: ModelState, typedPaths: readonly TypedPath[]): Composition;
38
37
  export declare function storedRecord(record: ReplicaRecord): string;
39
38
  export declare function slicing(entries: readonly HeldEntry[], paths: Iterable<string>): Generator<number, Slice, void>;
39
+ export type LayerEntry = Omit<StoredEntry, 'facts'>;
40
40
  export declare function entryAt(layer: Layer & {
41
41
  readonly written?: Readonly<Record<string, string>>;
42
- }, path: string): StoredEntry | null;
42
+ }, path: string): LayerEntry | null;
43
43
  export declare function slicingWith(slice: Slice, set: readonly StoredEntry[], removed: readonly string[]): Generator<number, Slice, void>;
44
44
  export declare function touchedBy(queue: readonly ChangeBatch[]): Set<string>;
45
45
  export declare function movedBy(queue: readonly ChangeBatch[], locator: string): Set<string>;
@@ -48,7 +48,7 @@ export type Replayed = {
48
48
  readonly touched: ReadonlySet<string>;
49
49
  };
50
50
  export declare function replaying(confirmed: Slice, queue: readonly ChangeBatch[], locator: string, composition: Composition): Generator<number, Replayed, void>;
51
- export declare function overlayOf(visible: Layer, touched: Iterable<string>): Generator<number, OverlayEntry[], void>;
51
+ export declare function overlayOf(visible: VisibleLayer, touched: Iterable<string>): Generator<number, OverlayEntry[], void>;
52
52
  export declare function holds(layer: Layer, preconditions: readonly Precondition[]): boolean;
53
53
  export declare function landed(batch: ChangeBatch, confirmed: Layer, current?: Readonly<Record<string, string>>): boolean;
54
54
  export type Standing = {
@@ -64,6 +64,6 @@ export type Returned = {
64
64
  readonly removed: readonly string[];
65
65
  };
66
66
  export declare function returnedPaths(submitted: ChangeBatch, accepted: Accepted): Set<string>;
67
- export declare function returning(confirmed: Slice, submitted: ChangeBatch, accepted: Accepted, writtenAt: string): Generator<number, Returned, void>;
67
+ export declare function returning(confirmed: Slice, submitted: ChangeBatch, accepted: Accepted, writtenAt: string, composition: Composition): Generator<number, Returned, void>;
68
68
  export {};
69
69
  //# sourceMappingURL=replica.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"replica.d.ts","sourceRoot":"","sources":["../src/replica.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"replica.d.ts","sourceRoot":"","sources":["../src/replica.ts"],"names":[],"mappings":"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"}