@agentshouse/mdruntime 0.1.0-c0136de3edfbe → 0.1.0-c01d4615bfe46
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.
- package/README.md +16 -15
- package/dist/acceptance.d.ts +0 -3
- package/dist/acceptance.d.ts.map +1 -1
- package/dist/acceptance.js +74 -164
- package/dist/act-lanes.d.ts +30 -0
- package/dist/act-lanes.d.ts.map +1 -0
- package/dist/act-lanes.js +225 -0
- package/dist/actions.d.ts +8 -2
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +122 -68
- package/dist/adapter.d.ts +49 -55
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts +0 -1
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +0 -5
- package/dist/bootstrap.d.ts +1 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +6 -18
- package/dist/change-set.d.ts +4 -0
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +6 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +4 -2
- package/dist/chat-types.d.ts +2 -2
- package/dist/chat-types.d.ts.map +1 -1
- package/dist/chat-types.js +11 -2
- package/dist/client.d.ts +13 -19
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +35 -19
- package/dist/collection.d.ts +22 -4
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +12 -2
- package/dist/compile.d.ts +2 -0
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +31 -24
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +32 -24
- package/dist/conversation-live.d.ts +147 -0
- package/dist/conversation-live.d.ts.map +1 -0
- package/dist/conversation-live.js +258 -0
- package/dist/conversation-row.d.ts.map +1 -1
- package/dist/conversation-row.js +7 -1
- package/dist/conversation.d.ts +52 -44
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +956 -1029
- package/dist/declaration.d.ts +10 -0
- package/dist/declaration.d.ts.map +1 -0
- package/dist/declaration.js +24 -0
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +19 -44
- package/dist/durability.d.ts +13 -0
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +4 -0
- package/dist/entry.js +1 -1
- package/dist/expectation.d.ts +26 -13
- package/dist/expectation.d.ts.map +1 -1
- package/dist/expectation.js +72 -19
- package/dist/failure.d.ts +3 -0
- package/dist/failure.d.ts.map +1 -1
- package/dist/failure.js +6 -0
- package/dist/figures.d.ts +1 -0
- package/dist/figures.d.ts.map +1 -1
- package/dist/figures.js +2 -2
- package/dist/file.d.ts.map +1 -1
- package/dist/file.js +2 -1
- package/dist/holdings.d.ts +29 -0
- package/dist/holdings.d.ts.map +1 -0
- package/dist/holdings.js +95 -0
- package/dist/host.d.ts +18 -2
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +46 -11
- package/dist/index.d.ts +17 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -6
- package/dist/install.d.ts +2 -4
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +53 -83
- package/dist/lifecycle.d.ts +1 -1
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +45 -35
- package/dist/listing.d.ts +6 -11
- package/dist/listing.d.ts.map +1 -1
- package/dist/listing.js +25 -61
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +3 -3
- package/dist/locks.d.ts +2 -4
- package/dist/locks.d.ts.map +1 -1
- package/dist/locks.js +10 -39
- package/dist/lost.d.ts.map +1 -1
- package/dist/lost.js +10 -22
- package/dist/media.d.ts +1 -1
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +10 -13
- package/dist/memory.d.ts +7 -3
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +58 -27
- package/dist/messages.d.ts +10 -6
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +26 -36
- package/dist/model.d.ts +0 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +0 -5
- package/dist/models.d.ts +4 -8
- package/dist/models.d.ts.map +1 -1
- package/dist/models.js +95 -135
- package/dist/observation.d.ts +3 -2
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +22 -21
- package/dist/opened.d.ts +1 -1
- package/dist/opened.d.ts.map +1 -1
- package/dist/opened.js +5 -5
- package/dist/opening.d.ts.map +1 -1
- package/dist/opening.js +7 -10
- package/dist/outcome.d.ts +10 -1
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +23 -2
- package/dist/overlay.d.ts +5 -1
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +36 -21
- package/dist/page-metadata.d.ts +8 -0
- package/dist/page-metadata.d.ts.map +1 -0
- package/dist/page-metadata.js +19 -0
- package/dist/parts.d.ts +3 -58
- package/dist/parts.d.ts.map +1 -1
- package/dist/parts.js +10 -115
- package/dist/paths.d.ts +1 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +22 -0
- package/dist/preparation.d.ts.map +1 -1
- package/dist/preparation.js +25 -24
- package/dist/presence.d.ts +52 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +220 -0
- package/dist/queries.d.ts +1 -1
- package/dist/queries.d.ts.map +1 -1
- package/dist/queries.js +24 -14
- package/dist/query.d.ts +0 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/questions.d.ts +2 -5
- package/dist/questions.d.ts.map +1 -1
- package/dist/questions.js +3 -6
- package/dist/queue.d.ts +40 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +450 -0
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +68 -23
- package/dist/react.d.ts +11 -1
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +33 -1
- package/dist/readiness.d.ts +1 -2
- package/dist/readiness.d.ts.map +1 -1
- package/dist/reads.d.ts +4 -1
- package/dist/reads.d.ts.map +1 -1
- package/dist/reads.js +47 -5
- package/dist/recovery.d.ts +3 -1
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +29 -7
- package/dist/refresh.js +2 -2
- package/dist/refusal.d.ts.map +1 -1
- package/dist/refusal.js +5 -6
- package/dist/replica.d.ts +5 -10
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +15 -16
- package/dist/retried.d.ts +30 -0
- package/dist/retried.d.ts.map +1 -0
- package/dist/retried.js +72 -0
- package/dist/room-draft.d.ts +4 -6
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +48 -59
- package/dist/room-drafts.d.ts.map +1 -1
- package/dist/room-drafts.js +17 -16
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +3 -4
- package/dist/runtime.d.ts +11 -19
- package/dist/runtime.d.ts.map +1 -1
- package/dist/save.d.ts +42 -86
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +333 -163
- package/dist/saves.d.ts +2 -40
- package/dist/saves.d.ts.map +1 -1
- package/dist/saves.js +109 -703
- package/dist/seed.d.ts.map +1 -1
- package/dist/seed.js +2 -3
- package/dist/shared.d.ts +1 -6
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +13 -95
- package/dist/shown.d.ts +6 -4
- package/dist/shown.d.ts.map +1 -1
- package/dist/shown.js +43 -35
- package/dist/socket/lanes.d.ts +12 -4
- package/dist/socket/lanes.d.ts.map +1 -1
- package/dist/socket/lanes.js +34 -8
- package/dist/socket/session.d.ts +0 -1
- package/dist/socket/session.d.ts.map +1 -1
- package/dist/socket.d.ts +3 -6
- package/dist/socket.d.ts.map +1 -1
- package/dist/socket.js +5 -16
- package/dist/source.d.ts +0 -7
- package/dist/source.d.ts.map +1 -1
- package/dist/source.js +5 -4
- package/dist/store/records.d.ts +11 -8
- package/dist/store/records.d.ts.map +1 -1
- package/dist/store/records.js +43 -12
- package/dist/store/space.d.ts +1 -1
- package/dist/store/space.d.ts.map +1 -1
- package/dist/store/space.js +0 -2
- package/dist/store/watchers.js +1 -2
- package/dist/store.d.ts +12 -7
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +38 -13
- package/dist/stored.d.ts +2 -1
- package/dist/stored.d.ts.map +1 -1
- package/dist/stored.js +27 -15
- package/dist/surface.d.ts +7 -4
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +30 -25
- package/dist/sync.d.ts +0 -1
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +93 -89
- package/dist/tables.d.ts +19 -11
- package/dist/tables.d.ts.map +1 -1
- package/dist/tables.js +58 -21
- package/dist/tallies.d.ts.map +1 -1
- package/dist/tallies.js +6 -7
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +2 -2
- package/dist/wire.d.ts +53 -7
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +17 -4
- package/package.json +3 -2
- package/dist/attempt.d.ts +0 -16
- package/dist/attempt.d.ts.map +0 -1
- package/dist/attempt.js +0 -70
- package/dist/job.d.ts +0 -33
- package/dist/job.d.ts.map +0 -1
- package/dist/job.js +0 -54
- package/dist/log.d.ts +0 -6
- package/dist/log.d.ts.map +0 -1
- package/dist/log.js +0 -14
- package/dist/socket/rooms.d.ts +0 -43
- package/dist/socket/rooms.d.ts.map +0 -1
- package/dist/socket/rooms.js +0 -90
- package/dist/store/fences.d.ts +0 -16
- package/dist/store/fences.d.ts.map +0 -1
- package/dist/store/fences.js +0 -26
package/dist/presence.js
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
const UNANSWERED = {
|
|
2
|
+
stale: false,
|
|
3
|
+
repairable: null,
|
|
4
|
+
repairing: false,
|
|
5
|
+
reloadDue: false,
|
|
6
|
+
refusal: null,
|
|
7
|
+
unreading: false,
|
|
8
|
+
unreadable: false,
|
|
9
|
+
unheldModel: null,
|
|
10
|
+
confirmed: false,
|
|
11
|
+
};
|
|
12
|
+
// A Room the Provider answers not ready is asked again after these waits, the last repeating, so a chunk build that catches up within seconds installs at once and a long one is asked every 15 seconds.
|
|
13
|
+
const NOT_READY_MS = [1_000, 2_000, 3_000, 5_000, 8_000, 11_000, 15_000];
|
|
14
|
+
// A Room that locks offline stays readable this long after the connection drops, so a laptop waking or changing network keeps working while a disconnected device locks soon after.
|
|
15
|
+
const LOCK_GRACE_MS = 120_000;
|
|
16
|
+
export function createPresence() {
|
|
17
|
+
const listed = new Map();
|
|
18
|
+
const answered = new Map();
|
|
19
|
+
const marks = new Map();
|
|
20
|
+
const lastLost = new Map();
|
|
21
|
+
const unready = new Map();
|
|
22
|
+
let lossCount = 0;
|
|
23
|
+
let lockGrace = null;
|
|
24
|
+
function answer(locator) {
|
|
25
|
+
return answered.get(locator) ?? UNANSWERED;
|
|
26
|
+
}
|
|
27
|
+
function change(locator, next) {
|
|
28
|
+
answered.set(locator, { ...answer(locator), ...next });
|
|
29
|
+
}
|
|
30
|
+
function heard(locator, next) {
|
|
31
|
+
if (!marks.has(locator))
|
|
32
|
+
change(locator, next);
|
|
33
|
+
}
|
|
34
|
+
function readied(locator) {
|
|
35
|
+
const held = unready.get(locator);
|
|
36
|
+
if (held === undefined)
|
|
37
|
+
return;
|
|
38
|
+
if (held.timer !== null)
|
|
39
|
+
clearTimeout(held.timer);
|
|
40
|
+
unready.delete(locator);
|
|
41
|
+
}
|
|
42
|
+
function stopAsking(locator) {
|
|
43
|
+
for (const held of locator === undefined ? [...unready.keys()] : [locator])
|
|
44
|
+
readied(held);
|
|
45
|
+
}
|
|
46
|
+
function connectionLive() {
|
|
47
|
+
if (lockGrace !== null)
|
|
48
|
+
clearTimeout(lockGrace);
|
|
49
|
+
lockGrace = null;
|
|
50
|
+
}
|
|
51
|
+
function readable(locator) {
|
|
52
|
+
const { unreadable, unreading } = answer(locator);
|
|
53
|
+
if (!unreadable || marks.has(locator))
|
|
54
|
+
return false;
|
|
55
|
+
change(locator, {
|
|
56
|
+
unreadable: false,
|
|
57
|
+
...(unreading ? { refusal: null, unreading: false } : {}),
|
|
58
|
+
});
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
function locks(locator, mode) {
|
|
62
|
+
return mode === 'locked' && !answer(locator).confirmed && !marks.has(locator);
|
|
63
|
+
}
|
|
64
|
+
function liftable(locator, discovery) {
|
|
65
|
+
const mark = marks.get(locator);
|
|
66
|
+
return mark === undefined || mark.during < discovery;
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
list(found, { whole, live }) {
|
|
70
|
+
const kept = found.filter(({ locator }) => !marks.has(locator));
|
|
71
|
+
if (whole)
|
|
72
|
+
listed.clear();
|
|
73
|
+
for (const room of kept) {
|
|
74
|
+
listed.set(room.locator, room);
|
|
75
|
+
change(room.locator, {
|
|
76
|
+
refusal: null,
|
|
77
|
+
unreading: false,
|
|
78
|
+
...(live && room.replica.admission === 'admitted' ? { confirmed: true } : {}),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
return kept;
|
|
82
|
+
},
|
|
83
|
+
room: (locator) => listed.get(locator),
|
|
84
|
+
rooms: () => [...listed.values()],
|
|
85
|
+
available(locator, selection) {
|
|
86
|
+
if (marks.has(locator))
|
|
87
|
+
return false;
|
|
88
|
+
const room = listed.get(locator);
|
|
89
|
+
if (room === undefined)
|
|
90
|
+
return true;
|
|
91
|
+
return ((selection === undefined || selection === room.replica.selection) &&
|
|
92
|
+
room.replica.admission === 'admitted' &&
|
|
93
|
+
!answer(locator).unreadable);
|
|
94
|
+
},
|
|
95
|
+
refusal: (locator) => answer(locator).refusal,
|
|
96
|
+
unheldModel: (locator) => answer(locator).unheldModel,
|
|
97
|
+
refused(locator, refusal) {
|
|
98
|
+
if (refusal === null) {
|
|
99
|
+
heard(locator, { unreadable: true });
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const unreading = refusal.scope !== 'operation' && refusal.scope !== 'model';
|
|
103
|
+
heard(locator, {
|
|
104
|
+
refusal: { code: refusal.code, fields: refusal.fields, retryable: refusal.retryable },
|
|
105
|
+
unreading,
|
|
106
|
+
...(unreading ? { unreadable: true } : {}),
|
|
107
|
+
});
|
|
108
|
+
},
|
|
109
|
+
readable,
|
|
110
|
+
modelled(locator, model) {
|
|
111
|
+
heard(locator, { unheldModel: model });
|
|
112
|
+
},
|
|
113
|
+
installed(locator, bootstrapped) {
|
|
114
|
+
if (marks.has(locator))
|
|
115
|
+
return;
|
|
116
|
+
if (bootstrapped) {
|
|
117
|
+
readied(locator);
|
|
118
|
+
change(locator, { unheldModel: null });
|
|
119
|
+
}
|
|
120
|
+
change(locator, { stale: false });
|
|
121
|
+
readable(locator);
|
|
122
|
+
},
|
|
123
|
+
async locked(locator, stored) {
|
|
124
|
+
if (marks.has(locator) || answer(locator).confirmed)
|
|
125
|
+
return false;
|
|
126
|
+
return locks(locator, (await stored()) ?? listed.get(locator)?.replica.offline);
|
|
127
|
+
},
|
|
128
|
+
lockedAmong(stored) {
|
|
129
|
+
const modes = new Map([...listed].map(([locator, room]) => [locator, room.replica.offline]));
|
|
130
|
+
for (const [locator, mode] of stored)
|
|
131
|
+
modes.set(locator, mode);
|
|
132
|
+
return [...modes]
|
|
133
|
+
.filter(([locator, mode]) => locks(locator, mode))
|
|
134
|
+
.map(([locator]) => locator)
|
|
135
|
+
.sort();
|
|
136
|
+
},
|
|
137
|
+
connectionLost(lapsed) {
|
|
138
|
+
if (lockGrace !== null)
|
|
139
|
+
return;
|
|
140
|
+
lockGrace = setTimeout(() => {
|
|
141
|
+
lockGrace = null;
|
|
142
|
+
lapsed();
|
|
143
|
+
}, LOCK_GRACE_MS);
|
|
144
|
+
},
|
|
145
|
+
connectionLive,
|
|
146
|
+
lapse() {
|
|
147
|
+
for (const [locator, held] of answered) {
|
|
148
|
+
if (held.confirmed)
|
|
149
|
+
answered.set(locator, { ...held, confirmed: false });
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
stood(locator, stale, repairable) {
|
|
153
|
+
heard(locator, { stale, ...(repairable === undefined ? {} : { repairable }) });
|
|
154
|
+
},
|
|
155
|
+
repairing(locator, running) {
|
|
156
|
+
change(locator, { repairing: running });
|
|
157
|
+
},
|
|
158
|
+
reload(locator, due) {
|
|
159
|
+
change(locator, { reloadDue: due });
|
|
160
|
+
},
|
|
161
|
+
standing(locator) {
|
|
162
|
+
const { stale, repairable, repairing, reloadDue } = answer(locator);
|
|
163
|
+
return { stale, repairable, repairing, reloadDue };
|
|
164
|
+
},
|
|
165
|
+
settled: () => ![...answered].some(([locator, { stale }]) => stale && !marks.has(locator)),
|
|
166
|
+
repairsOwed: () => [...answered]
|
|
167
|
+
.filter(([locator, { stale, repairable }]) => stale && repairable !== null && !marks.has(locator))
|
|
168
|
+
.map(([locator]) => locator),
|
|
169
|
+
askAgain(locator, ask) {
|
|
170
|
+
const held = unready.get(locator) ?? { tries: 0, timer: null };
|
|
171
|
+
unready.set(locator, held);
|
|
172
|
+
if (held.timer !== null)
|
|
173
|
+
return;
|
|
174
|
+
const wait = NOT_READY_MS[Math.min(held.tries, NOT_READY_MS.length - 1)];
|
|
175
|
+
held.tries += 1;
|
|
176
|
+
held.timer = setTimeout(() => {
|
|
177
|
+
held.timer = null;
|
|
178
|
+
ask();
|
|
179
|
+
}, wait);
|
|
180
|
+
},
|
|
181
|
+
stopAsking,
|
|
182
|
+
lose(locator, during) {
|
|
183
|
+
if (marks.has(locator))
|
|
184
|
+
return false;
|
|
185
|
+
marks.set(locator, { during, written: false });
|
|
186
|
+
lastLost.set(locator, ++lossCount);
|
|
187
|
+
listed.delete(locator);
|
|
188
|
+
readied(locator);
|
|
189
|
+
const { repairing, reloadDue } = answer(locator);
|
|
190
|
+
answered.set(locator, { ...UNANSWERED, repairing, reloadDue });
|
|
191
|
+
return true;
|
|
192
|
+
},
|
|
193
|
+
writing(locator) {
|
|
194
|
+
const mark = marks.get(locator);
|
|
195
|
+
if (mark === undefined || mark.written)
|
|
196
|
+
return false;
|
|
197
|
+
marks.set(locator, { ...mark, written: true });
|
|
198
|
+
return true;
|
|
199
|
+
},
|
|
200
|
+
unwritten(locator) {
|
|
201
|
+
const mark = marks.get(locator);
|
|
202
|
+
if (mark !== undefined)
|
|
203
|
+
marks.set(locator, { ...mark, written: false });
|
|
204
|
+
},
|
|
205
|
+
lost: (locator) => marks.has(locator),
|
|
206
|
+
losses: () => lossCount,
|
|
207
|
+
lostSince: (locator, losses) => marks.has(locator) || (lastLost.get(locator) ?? 0) > losses,
|
|
208
|
+
liftable,
|
|
209
|
+
lift(locator, discovery, unfenced) {
|
|
210
|
+
const mark = marks.get(locator);
|
|
211
|
+
if (mark !== undefined && liftable(locator, discovery) && (unfenced || !mark.written)) {
|
|
212
|
+
marks.delete(locator);
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
close() {
|
|
216
|
+
stopAsking();
|
|
217
|
+
connectionLive();
|
|
218
|
+
},
|
|
219
|
+
};
|
|
220
|
+
}
|
package/dist/queries.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export declare function figuresCover(runtime: Runtime): Promise<FiguresCover>;
|
|
|
9
9
|
export declare function answeredPlan(runtime: Runtime, plan: Plan, cover: () => Promise<Cover>): Promise<Ran>;
|
|
10
10
|
export declare function rowsQuery(runtime: Runtime, plan: Plan): Promise<QueryResult>;
|
|
11
11
|
export declare function planned(runtime: Runtime, input: unknown, reach: PortReach | null): Promise<Plan>;
|
|
12
|
-
export declare function roomTallies(runtime: Runtime, rooms: readonly QueryRoom[], since: string): Promise<readonly import("./tallies.
|
|
12
|
+
export declare function roomTallies(runtime: Runtime, rooms: readonly QueryRoom[], since: string): Promise<readonly import("./tallies.ts").RoomTally[]>;
|
|
13
13
|
export declare function watchPlan(runtime: Runtime, plan: Plan, deliver: Deliver, fail: Fail): () => void;
|
|
14
14
|
export declare function watchPlanned(runtime: Runtime, planning: Promise<Plan>, deliver: Deliver, fail: Fail): () => void;
|
|
15
15
|
export declare function searched(runtime: Runtime, input: unknown, reach: PortReach | null): Promise<SearchResult>;
|
package/dist/queries.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAK5C,OAAO,EAIL,KAAK,IAAI,EACT,KAAK,WAAW,EAEjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAa,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAGhF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,KAAK,EAAa,SAAS,EAAgB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAK5C,OAAO,EAIL,KAAK,IAAI,EACT,KAAK,WAAW,EAEjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAa,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAGhF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,KAAK,EAAa,SAAS,EAAgB,MAAM,YAAY,CAAC;AAqFrE,wBAAsB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAa1E;AAoGD,wBAAsB,YAAY,CAChC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,GAC1B,OAAO,CAAC,GAAG,CAAC,CAQd;AAQD,wBAAsB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAWlF;AAED,wBAAsB,OAAO,CAC3B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,SAAS,GAAG,IAAI,GACtB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,wDAO7F;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,IAAI,CAchG;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,EACvB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,GACT,MAAM,IAAI,CAeZ;AAED,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,SAAS,GAAG,IAAI,GACtB,OAAO,CAAC,YAAY,CAAC,CAkDvB"}
|
package/dist/queries.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { identityOf } from '@agentshouse/mdmodel';
|
|
2
2
|
import { ROOM_TOTALS } from './figures.js';
|
|
3
3
|
import { roomInFlight } from './install.js';
|
|
4
|
-
import { roomFacts } from './listing.js';
|
|
4
|
+
import { compositionFor, roomFacts } from './listing.js';
|
|
5
5
|
import { lockedRooms } from './locks.js';
|
|
6
6
|
import { OFFLINE, UNCERTAIN, failure } from './outcome.js';
|
|
7
7
|
import { connectionNow, prepare, roomsOfReach } from './preparation.js';
|
|
@@ -13,10 +13,10 @@ import { searchPlanOf } from './search.js';
|
|
|
13
13
|
import { seedApplies, seededResult, watchSeeded } from './seed.js';
|
|
14
14
|
import { capped, MAXIMUM_WINDOW } from './windows.js';
|
|
15
15
|
const QUERY_BYTES = 1 << 20;
|
|
16
|
-
function everyRoom({
|
|
16
|
+
function everyRoom({ presence }, held) {
|
|
17
17
|
return [
|
|
18
18
|
...new Set([
|
|
19
|
-
...
|
|
19
|
+
...presence.rooms().map(({ locator }) => locator),
|
|
20
20
|
...held.rooms.keys(),
|
|
21
21
|
...held.queues.keys(),
|
|
22
22
|
]),
|
|
@@ -29,10 +29,8 @@ function reachedRooms(runtime, plan, held) {
|
|
|
29
29
|
.filter((locator) => (reached === null || reached.has(locator)) && !plan.locked.includes(locator))
|
|
30
30
|
.sort();
|
|
31
31
|
}
|
|
32
|
-
function awaited({ socket }, locator) {
|
|
33
|
-
return (!socket.session.now().roomsListed ||
|
|
34
|
-
(socket.rooms.declared(locator) !== undefined &&
|
|
35
|
-
socket.rooms.discovered(locator)?.replica.admission === 'admitted'));
|
|
32
|
+
function awaited({ socket, presence }, locator) {
|
|
33
|
+
return (!socket.session.now().roomsListed || presence.room(locator)?.replica.admission === 'admitted');
|
|
36
34
|
}
|
|
37
35
|
function coveredRooms(runtime, locators, whole, held) {
|
|
38
36
|
const { store, socket } = runtime;
|
|
@@ -64,7 +62,7 @@ function coveredRooms(runtime, locators, whole, held) {
|
|
|
64
62
|
}
|
|
65
63
|
if (pending.length > 0)
|
|
66
64
|
return { pending };
|
|
67
|
-
return { coverage: { rooms: coverage,
|
|
65
|
+
return { coverage: { rooms: coverage, overlay }, rooms: read };
|
|
68
66
|
}
|
|
69
67
|
function covered(runtime, plan, held) {
|
|
70
68
|
return coveredRooms(runtime, reachedRooms(runtime, plan, held), plan.rooms === null && plan.reach === null, held);
|
|
@@ -119,7 +117,22 @@ async function windowRows(local, plan, rooms, unchanged) {
|
|
|
119
117
|
}
|
|
120
118
|
return null;
|
|
121
119
|
}
|
|
122
|
-
|
|
120
|
+
function freeTextAsked(plan) {
|
|
121
|
+
return plan.shape.kind === 'documents' && (plan.shape.sections !== null || plan.shape.preamble);
|
|
122
|
+
}
|
|
123
|
+
async function composedRooms(runtime, plan, rooms) {
|
|
124
|
+
if (!freeTextAsked(plan))
|
|
125
|
+
return rooms;
|
|
126
|
+
const held = await runtime.store.rooms(rooms.map(({ locator }) => locator));
|
|
127
|
+
return rooms.map((room) => {
|
|
128
|
+
const stored = held.get(room.locator);
|
|
129
|
+
return stored === undefined
|
|
130
|
+
? room
|
|
131
|
+
: { ...room, composition: compositionFor(runtime, stored.record) };
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
async function coveredRows(runtime, plan, cover) {
|
|
135
|
+
const { store } = runtime;
|
|
123
136
|
for (;;) {
|
|
124
137
|
const before = await cover();
|
|
125
138
|
if ('pending' in before)
|
|
@@ -128,7 +141,7 @@ async function coveredRows({ store }, plan, cover) {
|
|
|
128
141
|
const keys = before.rooms.map(({ key }) => key);
|
|
129
142
|
const changes = local.changes(keys);
|
|
130
143
|
const current = () => local.changes(keys) === changes;
|
|
131
|
-
const rows = await windowRows(local, plan, before.rooms, current);
|
|
144
|
+
const rows = await windowRows(local, plan, await composedRooms(runtime, plan, before.rooms), current);
|
|
132
145
|
const after = await cover();
|
|
133
146
|
if (rows !== null && sameCover(before, after))
|
|
134
147
|
return { rows, cover: before, current };
|
|
@@ -213,7 +226,7 @@ export function watchPlanned(runtime, planning, deliver, fail) {
|
|
|
213
226
|
};
|
|
214
227
|
}
|
|
215
228
|
export async function searched(runtime, input, reach) {
|
|
216
|
-
const { store, socket
|
|
229
|
+
const { store, socket } = runtime;
|
|
217
230
|
const { session } = socket;
|
|
218
231
|
const asked = searchPlanOf(input);
|
|
219
232
|
await socket.ready;
|
|
@@ -249,12 +262,10 @@ export async function searched(runtime, input, reach) {
|
|
|
249
262
|
const { closed, authorization, refusal } = session.now();
|
|
250
263
|
if (closed || authorization === undefined || refusal !== null)
|
|
251
264
|
return UNCERTAIN;
|
|
252
|
-
journal.record('transfer search');
|
|
253
265
|
try {
|
|
254
266
|
const result = await search(authorization, { text: asked.text, rooms });
|
|
255
267
|
if (result.kind === 'revoked-authorization')
|
|
256
268
|
await refuse(runtime, 'revoked-authorization');
|
|
257
|
-
journal.record(`outcome search ${result.kind}`);
|
|
258
269
|
if (result.kind === 'rejected')
|
|
259
270
|
return result;
|
|
260
271
|
if (result.kind !== 'found')
|
|
@@ -266,7 +277,6 @@ export async function searched(runtime, input, reach) {
|
|
|
266
277
|
};
|
|
267
278
|
}
|
|
268
279
|
catch {
|
|
269
|
-
journal.record('outcome search transport-uncertainty');
|
|
270
280
|
return UNCERTAIN;
|
|
271
281
|
}
|
|
272
282
|
}
|
package/dist/query.d.ts
CHANGED
package/dist/query.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,MAAM,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,SAAS,OAAO,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAEjF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
|
package/dist/questions.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export type ChatField = {
|
|
|
14
14
|
export type ChatAnswer = Readonly<Record<string, unknown>>;
|
|
15
15
|
export type ChatQuestion = {
|
|
16
16
|
readonly interaction: string;
|
|
17
|
+
readonly asked: string | null;
|
|
17
18
|
readonly secret: boolean;
|
|
18
19
|
readonly message: string;
|
|
19
20
|
readonly fields: readonly ChatField[];
|
|
@@ -24,9 +25,5 @@ export type ChatQuestion = {
|
|
|
24
25
|
export declare function entered(field: ChatField): boolean;
|
|
25
26
|
export declare function questionsOf(view: Pick<ConversationView, 'questions'> | null): readonly ChatQuestion[];
|
|
26
27
|
export declare function openQuestion(questions: readonly unknown[]): string | null;
|
|
27
|
-
export
|
|
28
|
-
readonly question: ChatQuestion;
|
|
29
|
-
readonly field: ChatField;
|
|
30
|
-
};
|
|
31
|
-
export declare function loneOf(questions: readonly ChatQuestion[]): ChatLone | null;
|
|
28
|
+
export declare function questionAsked(questions: readonly unknown[]): string | null;
|
|
32
29
|
//# sourceMappingURL=questions.d.ts.map
|
package/dist/questions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../src/questions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG1D,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,CAAC;IAC5E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE3D,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B,CAAC;AAuCF,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAEjD;AA2DD,wBAAgB,WAAW,CACzB,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,GAAG,IAAI,GAC/C,SAAS,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../src/questions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG1D,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,CAAC;IAC5E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE3D,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B,CAAC;AAuCF,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAEjD;AA2DD,wBAAgB,WAAW,CACzB,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,GAAG,IAAI,GAC/C,SAAS,YAAY,EAAE,CAiBzB;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI,CAKzE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI,CAE1E"}
|
package/dist/questions.js
CHANGED
|
@@ -95,6 +95,7 @@ export function questionsOf(view) {
|
|
|
95
95
|
: [
|
|
96
96
|
{
|
|
97
97
|
interaction,
|
|
98
|
+
asked: text(one, 'asked_at'),
|
|
98
99
|
secret: one.secret === true,
|
|
99
100
|
undelivered: one.telegram_undelivered === true,
|
|
100
101
|
...asked,
|
|
@@ -109,10 +110,6 @@ export function openQuestion(questions) {
|
|
|
109
110
|
const said = asked.message === '' ? asked.fields[0]?.prompt : asked.message;
|
|
110
111
|
return said === undefined || said === '' ? null : excerpt(said);
|
|
111
112
|
}
|
|
112
|
-
export function
|
|
113
|
-
|
|
114
|
-
const only = asked?.fields.length === 1 ? asked.fields[0] : undefined;
|
|
115
|
-
return asked !== undefined && only !== undefined && entered(only)
|
|
116
|
-
? { question: asked, field: only }
|
|
117
|
-
: null;
|
|
113
|
+
export function questionAsked(questions) {
|
|
114
|
+
return questionsOf({ questions })[0]?.asked ?? null;
|
|
118
115
|
}
|
package/dist/queue.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { MutationResult } from './adapter.js';
|
|
2
|
+
import { type ChangeBatch } from './change.js';
|
|
3
|
+
import { type HeldReplica, type ReplicaRecord, type Returned, type Slice } from './replica.js';
|
|
4
|
+
import type { Runtime } from './runtime.js';
|
|
5
|
+
import type { SavePlan } from './save.js';
|
|
6
|
+
import type { SaveResult } from './saves.js';
|
|
7
|
+
import type { PendingState, RoomCommit, Store, StoredFile, View, Work } from './store.js';
|
|
8
|
+
export type Queueing = Pick<Runtime, 'store' | 'localSaves'> & {
|
|
9
|
+
readonly socket: Pick<Runtime['socket'], 'continuing'>;
|
|
10
|
+
readonly presence: Pick<Runtime['presence'], 'lost' | 'unheldModel' | 'room'>;
|
|
11
|
+
};
|
|
12
|
+
export type Restand = {
|
|
13
|
+
readonly locator: string;
|
|
14
|
+
readonly record: ReplicaRecord;
|
|
15
|
+
readonly accepted?: string;
|
|
16
|
+
readonly adopted?: Returned;
|
|
17
|
+
readonly installed?: Pick<RoomCommit, 'published' | 'refreshed'>;
|
|
18
|
+
readonly refused?: true;
|
|
19
|
+
readonly after?: () => void;
|
|
20
|
+
};
|
|
21
|
+
export type Appending = {
|
|
22
|
+
readonly plan: SavePlan;
|
|
23
|
+
readonly files: readonly StoredFile[];
|
|
24
|
+
readonly held: ReadonlyMap<string, {
|
|
25
|
+
readonly replica: HeldReplica;
|
|
26
|
+
readonly confirmed: Slice;
|
|
27
|
+
}>;
|
|
28
|
+
readonly after?: () => Promise<void>;
|
|
29
|
+
};
|
|
30
|
+
type Answer = Extract<MutationResult, {
|
|
31
|
+
kind: 'conflicted' | 'rejected';
|
|
32
|
+
}>;
|
|
33
|
+
export declare function withdrawable(states: ReadonlyMap<string, PendingState>): (batch: ChangeBatch) => boolean;
|
|
34
|
+
export declare function sliceAt(store: Store, record: ReplicaRecord, view: View, queue: readonly ChangeBatch[], extra?: Iterable<string>, moved?: Iterable<string>): Promise<Slice>;
|
|
35
|
+
export declare function settle(runtime: Queueing, locators: readonly string[], decide: (held: ReadonlyMap<string, Work>) => Promise<readonly Restand[]>): Promise<void>;
|
|
36
|
+
export declare function answered(runtime: Queueing, locator: string, head: ChangeBatch, answer: Answer): Promise<void>;
|
|
37
|
+
export declare function unpair(runtime: Queueing): Promise<void>;
|
|
38
|
+
export declare function append(runtime: Queueing, appending: Appending): Promise<SaveResult>;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"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"}
|