@agentshouse/mdruntime 0.1.0-cd26b960b7262 → 0.1.0-cd30853a1b15e
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 +21 -19
- package/dist/acceptance.d.ts +0 -3
- package/dist/acceptance.d.ts.map +1 -1
- package/dist/acceptance.js +72 -158
- 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 +118 -67
- package/dist/adapter.d.ts +81 -56
- 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/authored.d.ts +88 -0
- package/dist/authored.d.ts.map +1 -0
- package/dist/authored.js +345 -0
- package/dist/bootstrap.d.ts +1 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +6 -19
- 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 +4 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +3 -0
- package/dist/chat-types.d.ts +0 -2
- package/dist/chat-types.d.ts.map +1 -1
- package/dist/chat-types.js +0 -2
- package/dist/client.d.ts +10 -19
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +30 -18
- package/dist/collection.d.ts +25 -4
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +19 -2
- package/dist/column.d.ts +5 -0
- package/dist/column.d.ts.map +1 -0
- package/dist/column.js +9 -0
- package/dist/compile.d.ts +2 -0
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +17 -5
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +31 -24
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +1 -1
- package/dist/conversation-live.d.ts +26 -12
- package/dist/conversation-live.d.ts.map +1 -1
- package/dist/conversation-live.js +23 -12
- package/dist/conversation-row.d.ts +8 -1
- package/dist/conversation-row.d.ts.map +1 -1
- package/dist/conversation-row.js +20 -7
- package/dist/conversation.d.ts +32 -10
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +317 -232
- 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 +4 -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 +25 -14
- package/dist/expectation.d.ts.map +1 -1
- package/dist/expectation.js +51 -20
- 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.map +1 -1
- package/dist/figures.js +4 -2
- package/dist/file.d.ts.map +1 -1
- package/dist/file.js +2 -1
- package/dist/host.d.ts +18 -2
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +55 -15
- package/dist/index.d.ts +15 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -7
- package/dist/install.d.ts +10 -6
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +92 -109
- package/dist/lifecycle.d.ts +1 -1
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +54 -40
- package/dist/listing.d.ts +11 -12
- package/dist/listing.d.ts.map +1 -1
- package/dist/listing.js +48 -72
- package/dist/live.d.ts +5 -3
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +74 -31
- package/dist/loaded.d.ts +5 -0
- package/dist/loaded.d.ts.map +1 -0
- package/dist/loaded.js +40 -0
- 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 +11 -23
- package/dist/media.d.ts +5 -0
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +65 -14
- package/dist/memory.d.ts +7 -3
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +56 -26
- package/dist/messages.d.ts +12 -6
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +25 -27
- 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 +97 -139
- package/dist/observation.d.ts +27 -12
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +173 -69
- package/dist/opened.d.ts +1 -1
- package/dist/opened.d.ts.map +1 -1
- package/dist/opened.js +2 -2
- package/dist/opening.d.ts.map +1 -1
- package/dist/opening.js +5 -9
- package/dist/outcome.d.ts +7 -0
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +23 -2
- package/dist/overlay.d.ts +6 -2
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +37 -24
- 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 -59
- package/dist/parts.d.ts.map +1 -1
- package/dist/parts.js +10 -123
- package/dist/preparation.d.ts +27 -6
- package/dist/preparation.d.ts.map +1 -1
- package/dist/preparation.js +154 -66
- package/dist/presence.d.ts +58 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +231 -0
- package/dist/queries.d.ts +2 -2
- package/dist/queries.d.ts.map +1 -1
- package/dist/queries.js +66 -30
- package/dist/questions.d.ts +1 -5
- package/dist/questions.d.ts.map +1 -1
- package/dist/questions.js +1 -7
- package/dist/queue.d.ts +40 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +480 -0
- package/dist/reach.d.ts +2 -3
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +83 -25
- package/dist/react.d.ts +8 -5
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +28 -5
- package/dist/readiness.d.ts +9 -3
- package/dist/readiness.d.ts.map +1 -1
- package/dist/readiness.js +3 -5
- package/dist/reads.d.ts +4 -2
- package/dist/reads.d.ts.map +1 -1
- package/dist/reads.js +11 -4
- 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 -5
- package/dist/replica.d.ts +5 -11
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +14 -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 +30 -5
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +270 -63
- package/dist/room-drafts.d.ts.map +1 -1
- package/dist/room-drafts.js +8 -5
- package/dist/room-list.d.ts +10 -0
- package/dist/room-list.d.ts.map +1 -0
- package/dist/room-list.js +45 -0
- package/dist/rows.d.ts +2 -1
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +9 -10
- package/dist/runtime.d.ts +9 -18
- package/dist/runtime.d.ts.map +1 -1
- package/dist/save.d.ts +42 -90
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +314 -223
- package/dist/saves.d.ts +2 -40
- package/dist/saves.d.ts.map +1 -1
- package/dist/saves.js +124 -703
- package/dist/seed.d.ts.map +1 -1
- package/dist/seed.js +4 -4
- package/dist/shown.d.ts +7 -5
- package/dist/shown.d.ts.map +1 -1
- package/dist/shown.js +75 -58
- 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.d.ts +3 -6
- package/dist/socket.d.ts.map +1 -1
- package/dist/socket.js +3 -14
- package/dist/source.d.ts +5 -7
- package/dist/source.d.ts.map +1 -1
- package/dist/source.js +13 -2
- package/dist/store/installs.d.ts +2 -2
- package/dist/store/installs.d.ts.map +1 -1
- package/dist/store/installs.js +10 -4
- package/dist/store/readiness.d.ts +5 -4
- package/dist/store/readiness.d.ts.map +1 -1
- package/dist/store/readiness.js +28 -12
- package/dist/store/records.d.ts +17 -6
- package/dist/store/records.d.ts.map +1 -1
- package/dist/store/records.js +56 -22
- package/dist/store/rooms-shown.d.ts +8 -0
- package/dist/store/rooms-shown.d.ts.map +1 -0
- package/dist/store/rooms-shown.js +13 -0
- package/dist/store.d.ts +23 -14
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +46 -17
- package/dist/stored.d.ts +24 -13
- package/dist/stored.d.ts.map +1 -1
- package/dist/stored.js +80 -29
- package/dist/surface.d.ts +5 -3
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +23 -21
- package/dist/sync.d.ts +1 -1
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +89 -85
- package/dist/tables.d.ts +16 -56
- package/dist/tables.d.ts.map +1 -1
- package/dist/tables.js +86 -327
- package/dist/tallies.d.ts.map +1 -1
- package/dist/tallies.js +1 -2
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +4 -10
- package/dist/wire.d.ts +45 -7
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +15 -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 -44
- 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/reach.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { QueryError } from '@agentshouse/mdmodel';
|
|
2
|
+
import { selected } from './collection.js';
|
|
1
3
|
import { unheldView } from './conversation.js';
|
|
2
4
|
import { modelTypes, NO_MODEL } from './model.js';
|
|
3
|
-
import { changeOf, digestApplied, digestOf, observing, } from './observation.js';
|
|
4
|
-
import { runtimeError } from './failure.js';
|
|
5
|
+
import { changeOf, digestApplied, digestOf, observing, unchanged, } from './observation.js';
|
|
6
|
+
import { runtimeError, uncaught } from './failure.js';
|
|
5
7
|
import { failure, lockedRoom, ROOM_LOCKED, undeclared, UNREADABLE, } from './outcome.js';
|
|
6
8
|
import { beneath } from './paths.js';
|
|
7
9
|
import { moveTarget, readParts, staleWrite, } from './room-draft.js';
|
|
@@ -19,10 +21,19 @@ const NO_CONVERSATION = {
|
|
|
19
21
|
interrupt: unconversed('conversations/interrupt'),
|
|
20
22
|
kill: unconversed('conversations/kill'),
|
|
21
23
|
delete: unconversed('conversations/delete'),
|
|
24
|
+
takeOut: unconversed('conversations/take-out'),
|
|
25
|
+
decide: unconversed('agent-functions/decide'),
|
|
26
|
+
rename: unconversed('conversations/rename'),
|
|
27
|
+
option: unconversed('conversations/option/set'),
|
|
28
|
+
retry: unconversed('conversations/retry'),
|
|
29
|
+
pin: () => Promise.resolve(),
|
|
30
|
+
openTurn: () => Promise.resolve(),
|
|
31
|
+
dismissSuggestion: () => Promise.resolve(),
|
|
22
32
|
};
|
|
23
33
|
const NO_CHAT_DRAFT = {
|
|
24
34
|
write: () => Promise.resolve(),
|
|
25
35
|
prepend: () => Promise.resolve(),
|
|
36
|
+
append: () => Promise.resolve(),
|
|
26
37
|
discard: () => Promise.resolve(),
|
|
27
38
|
};
|
|
28
39
|
function areasOf(reach) {
|
|
@@ -45,11 +56,11 @@ export function governs(reach, room) {
|
|
|
45
56
|
if (wholly(reach, room.locator)) {
|
|
46
57
|
return { collection: true, selection: room.typedSelection !== null };
|
|
47
58
|
}
|
|
48
|
-
const
|
|
59
|
+
const within = (path) => selected({ selection: room.typedSelection }, path);
|
|
49
60
|
const paths = reach.documents
|
|
50
61
|
.filter((document) => document.room === room.locator)
|
|
51
62
|
.map(({ path }) => path);
|
|
52
|
-
return { collection: paths.some((path) => !
|
|
63
|
+
return { collection: paths.some((path) => !within(path)), selection: paths.some(within) };
|
|
53
64
|
}
|
|
54
65
|
function covers(reach, room, path) {
|
|
55
66
|
return (reach === null ||
|
|
@@ -60,6 +71,19 @@ function covers(reach, room, path) {
|
|
|
60
71
|
function conversing(reach) {
|
|
61
72
|
return reach === null || reach.conversations;
|
|
62
73
|
}
|
|
74
|
+
function roomsAwaited(error, reach) {
|
|
75
|
+
return error.code === 'unknown-type' && reach !== null && reach.rooms.length === 0;
|
|
76
|
+
}
|
|
77
|
+
async function planInReach(runtime, input, reach, answered) {
|
|
78
|
+
try {
|
|
79
|
+
return await runtime.plan(input, reach);
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
if (error instanceof QueryError && (answered || roomsAwaited(error, reach)))
|
|
83
|
+
return null;
|
|
84
|
+
throw error;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
63
87
|
export function planReach(reach) {
|
|
64
88
|
return reach === null
|
|
65
89
|
? null
|
|
@@ -76,6 +100,14 @@ export function planReach(reach) {
|
|
|
76
100
|
function roomsWithin(reach, rooms) {
|
|
77
101
|
return rooms.filter((room) => wholly(reach, room.locator));
|
|
78
102
|
}
|
|
103
|
+
function roomsChangeWithin(reach, { changed, removed, order }) {
|
|
104
|
+
const within = {
|
|
105
|
+
changed: changed.filter(([locator]) => wholly(reach, locator)),
|
|
106
|
+
removed,
|
|
107
|
+
order: order === null ? null : order.filter((locator) => wholly(reach, locator)),
|
|
108
|
+
};
|
|
109
|
+
return unchanged(within) ? null : within;
|
|
110
|
+
}
|
|
79
111
|
function typesWithin(reach, room, types) {
|
|
80
112
|
if (room === undefined)
|
|
81
113
|
return structuredClone(UNHELD_TYPES);
|
|
@@ -105,12 +137,13 @@ function writeWithin(reach, write) {
|
|
|
105
137
|
function savedWithin(reach, room, result) {
|
|
106
138
|
if (reach === null || result.outcome === 'saved')
|
|
107
139
|
return result;
|
|
108
|
-
const { file, location, referrers, ...refusal } = result;
|
|
140
|
+
const { file, location, line, referrers, ...refusal } = result;
|
|
109
141
|
const hidden = file !== undefined && !covers(reach, room, file);
|
|
110
142
|
return {
|
|
111
143
|
...refusal,
|
|
112
144
|
...(file === undefined || hidden ? {} : { file }),
|
|
113
145
|
...(location === undefined || hidden ? {} : { location }),
|
|
146
|
+
...(line === undefined || hidden ? {} : { line }),
|
|
114
147
|
...(referrers === undefined
|
|
115
148
|
? {}
|
|
116
149
|
: { referrers: referrers.filter((path) => covers(reach, room, path)) }),
|
|
@@ -190,7 +223,7 @@ export function narrowed(runtime, given, port) {
|
|
|
190
223
|
shown = shown.then(() => making.then((value) => {
|
|
191
224
|
if (open)
|
|
192
225
|
deliver(value);
|
|
193
|
-
},
|
|
226
|
+
}, uncaught), uncaught);
|
|
194
227
|
},
|
|
195
228
|
stop() {
|
|
196
229
|
open = false;
|
|
@@ -230,7 +263,13 @@ export function narrowed(runtime, given, port) {
|
|
|
230
263
|
return () => { };
|
|
231
264
|
}
|
|
232
265
|
if (topic === 'rooms') {
|
|
233
|
-
return following(() => watch(topic, input, (rooms) =>
|
|
266
|
+
return following(() => watch(topic, input, (rooms) => {
|
|
267
|
+
const shown = Array.isArray(rooms)
|
|
268
|
+
? roomsWithin(reach, rooms)
|
|
269
|
+
: roomsChangeWithin(reach, rooms);
|
|
270
|
+
if (shown !== null)
|
|
271
|
+
deliver(shown);
|
|
272
|
+
}, fail));
|
|
234
273
|
}
|
|
235
274
|
if (topic === 'readiness') {
|
|
236
275
|
return following(() => runtime.watchReadiness(port, reach, deliver));
|
|
@@ -249,24 +288,31 @@ export function narrowed(runtime, given, port) {
|
|
|
249
288
|
return following(() => lockedFirst(room, () => watch(topic, input, (entries) => deliver(queueWithin(reach, room, entries)), fail), () => deliver([])), true);
|
|
250
289
|
}
|
|
251
290
|
if (topic === 'query') {
|
|
252
|
-
const planning = runtime.plan(input[0], reach);
|
|
253
291
|
let held = null;
|
|
292
|
+
let planning = null;
|
|
293
|
+
const waiting = (result) => {
|
|
294
|
+
const answer = { result, keys: [] };
|
|
295
|
+
if (held === null || changeOf(held, answer) !== null)
|
|
296
|
+
deliver(answer);
|
|
297
|
+
held = digestOf(answer);
|
|
298
|
+
};
|
|
254
299
|
return following(() => {
|
|
255
300
|
let open = true;
|
|
256
301
|
let stop = () => { };
|
|
302
|
+
if (planning?.reach !== reach) {
|
|
303
|
+
planning = { reach, plan: planInReach(runtime, input[0], reach, held !== null) };
|
|
304
|
+
}
|
|
305
|
+
const planned = planning.plan;
|
|
257
306
|
void (async () => {
|
|
258
|
-
const plan = await
|
|
307
|
+
const plan = await planned;
|
|
259
308
|
const locked = await runtime.lockedRooms();
|
|
260
309
|
if (!open)
|
|
261
310
|
return;
|
|
311
|
+
if (plan === null)
|
|
312
|
+
return waiting({ pending: [] });
|
|
262
313
|
const pending = unlocking(plan.rooms, locked);
|
|
263
|
-
if (pending !== null)
|
|
264
|
-
|
|
265
|
-
if (held === null || changeOf(held, answer) !== null)
|
|
266
|
-
deliver(answer);
|
|
267
|
-
held = digestOf(answer);
|
|
268
|
-
return;
|
|
269
|
-
}
|
|
314
|
+
if (pending !== null)
|
|
315
|
+
return waiting(pending);
|
|
270
316
|
let first = true;
|
|
271
317
|
const heard = (message) => {
|
|
272
318
|
if (!first) {
|
|
@@ -280,8 +326,7 @@ export function narrowed(runtime, given, port) {
|
|
|
280
326
|
if (change !== null)
|
|
281
327
|
deliver(change);
|
|
282
328
|
};
|
|
283
|
-
|
|
284
|
-
stop = runtime.watchPlan(current, (message) => {
|
|
329
|
+
stop = runtime.watchPlan({ ...plan, locked }, (message) => {
|
|
285
330
|
if (open)
|
|
286
331
|
heard(message);
|
|
287
332
|
}, (error) => {
|
|
@@ -314,7 +359,10 @@ export function narrowed(runtime, given, port) {
|
|
|
314
359
|
return () => { };
|
|
315
360
|
});
|
|
316
361
|
}
|
|
317
|
-
if (topic === 'figures' ||
|
|
362
|
+
if (topic === 'figures' ||
|
|
363
|
+
topic === 'holdings' ||
|
|
364
|
+
topic === 'listed-agents' ||
|
|
365
|
+
topic === 'room-list') {
|
|
318
366
|
if (reach === null)
|
|
319
367
|
return watch(topic, input, deliver, fail);
|
|
320
368
|
fail(deviceUnreached());
|
|
@@ -339,7 +387,9 @@ export function narrowed(runtime, given, port) {
|
|
|
339
387
|
...md,
|
|
340
388
|
rooms: () => md.rooms().then((rooms) => roomsWithin(reach, rooms)),
|
|
341
389
|
query: (async (input) => {
|
|
342
|
-
const plan = await runtime
|
|
390
|
+
const plan = await planInReach(runtime, input, reach, false);
|
|
391
|
+
if (plan === null)
|
|
392
|
+
return { pending: [] };
|
|
343
393
|
const locked = await runtime.lockedRooms();
|
|
344
394
|
return unlocking(plan.rooms, locked) ?? runtime.query({ ...plan, locked });
|
|
345
395
|
}),
|
|
@@ -431,7 +481,6 @@ export function narrowed(runtime, given, port) {
|
|
|
431
481
|
reached: async (room, roomVersion, path) => (path === undefined ? wholly(reach, room) : covers(reach, room, path)) &&
|
|
432
482
|
!(await runtime.locked(room)) &&
|
|
433
483
|
(await md.reached(room, roomVersion, path)),
|
|
434
|
-
log: () => (reach === null ? md.log() : ''),
|
|
435
484
|
cleanUp: () => (reach === null ? md.cleanUp() : Promise.reject(deviceUnreached())),
|
|
436
485
|
unsent: () => (reach === null ? md.unsent() : Promise.reject(deviceUnreached())),
|
|
437
486
|
reset: () => (reach === null ? md.reset() : Promise.reject(deviceUnreached())),
|
|
@@ -470,14 +519,23 @@ export function narrowed(runtime, given, port) {
|
|
|
470
519
|
read: (id, options) => conversation().read(id, options),
|
|
471
520
|
create: (input) => conversation().create(input),
|
|
472
521
|
send: (id, operation, draft) => conversation().send(id, operation, draft),
|
|
473
|
-
answer: (id, answer) => conversation().answer(id, answer),
|
|
474
|
-
interrupt: (id) => conversation().interrupt(id),
|
|
475
|
-
kill: (id) => conversation().kill(id),
|
|
476
|
-
delete: (id) => conversation().delete(id),
|
|
522
|
+
answer: (id, answer, operation) => conversation().answer(id, answer, operation),
|
|
523
|
+
interrupt: (id, operation) => conversation().interrupt(id, operation),
|
|
524
|
+
kill: (id, operation) => conversation().kill(id, operation),
|
|
525
|
+
delete: (id, operation) => conversation().delete(id, operation),
|
|
526
|
+
takeOut: (id, message, operation) => conversation().takeOut(id, message, operation),
|
|
527
|
+
decide: (request, decision, operation) => conversation().decide(request, decision, operation),
|
|
528
|
+
rename: (id, name, operation) => conversation().rename(id, name, operation),
|
|
529
|
+
option: (id, option, value, operation) => conversation().option(id, option, value, operation),
|
|
530
|
+
retry: (id, message, operation) => conversation().retry(id, message, operation),
|
|
531
|
+
pin: (figures) => conversation().pin(figures),
|
|
532
|
+
openTurn: (id, turn) => conversation().openTurn(id, turn),
|
|
533
|
+
dismissSuggestion: (id, suggestion) => conversation().dismissSuggestion(id, suggestion),
|
|
477
534
|
},
|
|
478
535
|
chatDraft: {
|
|
479
536
|
write: (id, draft, revision) => chatDraft().write(id, draft, revision),
|
|
480
537
|
prepend: (id, draft) => chatDraft().prepend(id, draft),
|
|
538
|
+
append: (id, draft) => chatDraft().append(id, draft),
|
|
481
539
|
discard: (id) => chatDraft().discard(id),
|
|
482
540
|
},
|
|
483
541
|
observe: observing(within),
|
package/dist/react.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import type { DocumentQuery, GroupQuery } from '@agentshouse/mdmodel';
|
|
2
|
+
import type { Acting, Lane, LaneShown } from './act-lanes.js';
|
|
2
3
|
import type { MdRuntimeClient } from './client.js';
|
|
3
4
|
import type { AppRoom } from './listing.js';
|
|
4
5
|
import type { ConnectionRefusal } from './socket.js';
|
|
5
6
|
import type { SavedRoomDraft, SaveResult } from './saves.js';
|
|
6
|
-
import type { Member, ServiceMode } from './adapter.js';
|
|
7
|
+
import type { ListedAgent, Member, RoomList, ServiceMode } from './adapter.js';
|
|
7
8
|
import type { ConversationAgent, ConversationEntry, ConversationOptions, ConversationView } from './conversation.js';
|
|
8
9
|
import { type RuntimeError } from './failure.js';
|
|
9
10
|
import type { FiguresResult } from './figures.js';
|
|
10
11
|
import type { Holdings } from './holdings.js';
|
|
11
|
-
import type { Expecting } from './expectation.js';
|
|
12
|
+
import type { Descriptor, Expecting } from './expectation.js';
|
|
12
13
|
import type { QueueEntry } from './outcome.js';
|
|
13
14
|
import type { DocumentResult, GroupResult, PendingResult } from './query.js';
|
|
14
15
|
import type { Readiness } from './readiness.js';
|
|
@@ -38,11 +39,13 @@ export declare function useObserve(client: Client, topic: 'presentation'): Obser
|
|
|
38
39
|
export declare function useObserve(client: Client, topic: 'conversation', conversation: string, options: ConversationOptions): Observed<ConversationView>;
|
|
39
40
|
export declare function useObserve(client: Client, topic: 'conversations'): Observed<readonly ConversationEntry[]>;
|
|
40
41
|
export declare function useObserve(client: Client, topic: 'agents'): Observed<readonly ConversationAgent[]>;
|
|
42
|
+
export declare function useObserve(client: Client, topic: 'listed-agents'): Observed<readonly ListedAgent[]>;
|
|
43
|
+
export declare function useObserve(client: Client, topic: 'room-list'): Observed<RoomList | null>;
|
|
41
44
|
export declare function useObserve(client: Client, topic: 'figures'): Observed<FiguresResult>;
|
|
42
45
|
export declare function useObserve(client: Client, topic: 'holdings'): Observed<Holdings>;
|
|
43
|
-
export declare function
|
|
44
|
-
|
|
45
|
-
|
|
46
|
+
export declare function useExpected<A, T>(store: Expecting, descriptor: Descriptor<A, T>, places: readonly A[], held: ReadonlyMap<A, T> | null): (place: A, held: T) => T;
|
|
47
|
+
export type LaneHeld<O> = LaneShown<O> & Pick<Lane<O>, 'run' | 'forget'>;
|
|
48
|
+
export declare function useLane<O>(lanes: Acting<O>): LaneHeld<O>;
|
|
46
49
|
export type Saving = {
|
|
47
50
|
readonly busy: boolean;
|
|
48
51
|
readonly outcome: SaveResult | null;
|
package/dist/react.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"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"}
|
package/dist/react.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useCallback, useEffect, useId, useLayoutEffect, useRef, useState } from 'react';
|
|
1
|
+
import { useCallback, useEffect, useId, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore, } from 'react';
|
|
2
2
|
import { failed } from './failure.js';
|
|
3
3
|
const LOADING = { state: 'loading' };
|
|
4
4
|
export function useObserve(client, topic, ...input) {
|
|
@@ -32,14 +32,37 @@ export function useObserve(client, topic, ...input) {
|
|
|
32
32
|
}, [client, key]);
|
|
33
33
|
return held !== null && held.client === client && held.key === key ? held.observed : LOADING;
|
|
34
34
|
}
|
|
35
|
-
|
|
35
|
+
function sameHeld(descriptor, was, now) {
|
|
36
|
+
if (was === now)
|
|
37
|
+
return true;
|
|
38
|
+
if (was === null || now === null || was.size !== now.size)
|
|
39
|
+
return false;
|
|
40
|
+
const before = new Map([...was].map(([place, value]) => [descriptor.place(place), value]));
|
|
41
|
+
return [...now].every(([place, value]) => {
|
|
42
|
+
const at = descriptor.place(place);
|
|
43
|
+
return before.has(at) && Object.is(before.get(at), value);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
export function useExpected(store, descriptor, places, held) {
|
|
36
47
|
const reader = useId();
|
|
37
|
-
|
|
48
|
+
const version = useSyncExternalStore(store.subscribe, store.version);
|
|
49
|
+
const asked = JSON.stringify(places.map((one) => descriptor.place(one)));
|
|
50
|
+
const kept = useRef(held);
|
|
51
|
+
if (!sameHeld(descriptor, kept.current, held))
|
|
52
|
+
kept.current = held;
|
|
53
|
+
const shown = kept.current;
|
|
54
|
+
useLayoutEffect(() => store.reads(reader, descriptor, places), [store, reader, descriptor, asked]);
|
|
38
55
|
useLayoutEffect(() => () => store.left(reader), [store, reader]);
|
|
39
56
|
useEffect(() => {
|
|
40
57
|
if (shown !== null)
|
|
41
|
-
store.heard(reader, shown);
|
|
42
|
-
}, [store, reader, shown]);
|
|
58
|
+
store.heard(reader, descriptor, shown);
|
|
59
|
+
}, [store, reader, descriptor, shown]);
|
|
60
|
+
return useCallback((place, value) => store.draw(descriptor, place, value), [store, descriptor, version]);
|
|
61
|
+
}
|
|
62
|
+
export function useLane(lanes) {
|
|
63
|
+
const lane = useMemo(() => lanes.open(), [lanes]);
|
|
64
|
+
const shown = useSyncExternalStore(lane.subscribe, lane.shown);
|
|
65
|
+
return useMemo(() => ({ ...shown, run: lane.run, forget: lane.forget }), [shown, lane]);
|
|
43
66
|
}
|
|
44
67
|
const IDLE = { busy: false, outcome: null, failure: null };
|
|
45
68
|
export function useSave(client) {
|
package/dist/readiness.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export type TargetCoverage = {
|
|
|
12
12
|
readonly rooms: readonly RoomCoverage[];
|
|
13
13
|
readonly conversations: ConversationCoverage;
|
|
14
14
|
};
|
|
15
|
-
export type Persistence = Open<'granted' | 'denied' | 'unavailable'>;
|
|
15
|
+
export type Persistence = Open<'granted' | 'denied' | 'unavailable' | 'memory'>;
|
|
16
16
|
export type Durability = Open<'persistent' | 'best-effort'>;
|
|
17
17
|
export type ConnectionAvailability = Open<'connected' | 'connecting' | 'unreachable'>;
|
|
18
18
|
export type HouseOutcome = Open<'open' | 'write-halted' | 'refused'>;
|
|
@@ -41,9 +41,15 @@ export type Readiness = {
|
|
|
41
41
|
readonly installation: Installation;
|
|
42
42
|
readonly lost: boolean;
|
|
43
43
|
};
|
|
44
|
+
export type ReadinessShown = Omit<Readiness, 'coverage'> & {
|
|
45
|
+
readonly coverage: Omit<TargetCoverage, 'rooms'>;
|
|
46
|
+
};
|
|
44
47
|
export type ReadinessFacts = Omit<Readiness, 'status' | 'ready' | 'usable' | 'durability' | 'coverage'> & {
|
|
45
|
-
readonly coverage: Omit<TargetCoverage, 'complete'
|
|
48
|
+
readonly coverage: Omit<TargetCoverage, 'complete' | 'rooms'> & {
|
|
49
|
+
readonly unsettled: number;
|
|
50
|
+
};
|
|
46
51
|
readonly established: boolean;
|
|
47
52
|
};
|
|
48
|
-
export declare
|
|
53
|
+
export declare const COMPLETE_ROOMS: ReadonlySet<string>;
|
|
54
|
+
export declare function readinessOf(facts: ReadinessFacts): ReadinessShown;
|
|
49
55
|
//# sourceMappingURL=readiness.d.ts.map
|
package/dist/readiness.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../src/readiness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;AAEzD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC;AAE1F,MAAM,MAAM,YAAY,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;CAAE,CAAC;AAEtF,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC;AAEjF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,QAAQ,GAAG,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../src/readiness.ts"],"names":[],"mappings":"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"}
|
package/dist/readiness.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
const COMPLETE_ROOMS = new Set(['complete', 'unadmitted']);
|
|
1
|
+
export const COMPLETE_ROOMS = new Set(['complete', 'unadmitted']);
|
|
2
2
|
export function readinessOf(facts) {
|
|
3
|
-
const { established, coverage: held, ...reported } = facts;
|
|
3
|
+
const { established, coverage: { unsettled, ...held }, ...reported } = facts;
|
|
4
4
|
const settledConversations = held.conversations === 'complete' || held.conversations === 'undeclared';
|
|
5
|
-
const complete = held.listed &&
|
|
6
|
-
settledConversations &&
|
|
7
|
-
held.rooms.every((room) => COMPLETE_ROOMS.has(room.state));
|
|
5
|
+
const complete = held.listed && settledConversations && unsettled === 0;
|
|
8
6
|
const coverage = { ...held, complete };
|
|
9
7
|
const stored = facts.code === 'stored';
|
|
10
8
|
const ready = stored && complete;
|
package/dist/reads.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type CallResult } from './outcome.js';
|
|
2
2
|
import type { Recovery } from './recovery.js';
|
|
3
|
+
import type { Attempt, Retries } from './retried.js';
|
|
3
4
|
import type { Connection, RuntimeDatabase } from './tables.js';
|
|
4
5
|
export declare const READ_TABLES: readonly string[];
|
|
5
6
|
export type ReadAt = {
|
|
@@ -14,7 +15,7 @@ export type ObservedRead = {
|
|
|
14
15
|
};
|
|
15
16
|
export type ReadAnswers = {
|
|
16
17
|
watch(name: string, input: unknown, deliver: (read: ObservedRead) => void): () => void;
|
|
17
|
-
again(): void;
|
|
18
|
+
again(led?: Promise<unknown>): void;
|
|
18
19
|
reopened(): void;
|
|
19
20
|
};
|
|
20
21
|
export type ReadAnswersOptions = {
|
|
@@ -23,7 +24,8 @@ export type ReadAnswersOptions = {
|
|
|
23
24
|
readonly unkept: readonly string[];
|
|
24
25
|
readonly leading: readonly string[];
|
|
25
26
|
readonly recovery: Recovery;
|
|
26
|
-
|
|
27
|
+
readonly retries: Retries;
|
|
28
|
+
call(name: string, input: unknown, attempt: Attempt): Promise<CallResult>;
|
|
27
29
|
online(): boolean;
|
|
28
30
|
streaming(): boolean;
|
|
29
31
|
closed(): boolean;
|
package/dist/reads.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reads.d.ts","sourceRoot":"","sources":["../src/reads.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reads.d.ts","sourceRoot":"","sources":["../src/reads.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACrD,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,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACpC,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,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1E,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,CAwJpE"}
|
package/dist/reads.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { refusedForSpace } from './durability.js';
|
|
2
|
+
import { uncaught } from './failure.js';
|
|
2
3
|
import { answeredResult, UNCERTAIN } from './outcome.js';
|
|
3
4
|
export const READ_TABLES = [
|
|
4
5
|
'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',
|
|
@@ -37,6 +38,8 @@ export function readAnswers(options) {
|
|
|
37
38
|
await database.ask({ kind: 'read.keep', ...read.at, answer }).catch((error) => {
|
|
38
39
|
if (refusedForSpace(error))
|
|
39
40
|
options.filled();
|
|
41
|
+
else
|
|
42
|
+
uncaught(error);
|
|
40
43
|
});
|
|
41
44
|
}
|
|
42
45
|
async function asked(read, led) {
|
|
@@ -44,7 +47,11 @@ export function readAnswers(options) {
|
|
|
44
47
|
read.owed = true;
|
|
45
48
|
return;
|
|
46
49
|
}
|
|
47
|
-
const
|
|
50
|
+
const attempt = { step: 'reading', instance: read.key };
|
|
51
|
+
const result = await options.call(read.at.name, read.asked, attempt).catch((error) => {
|
|
52
|
+
options.retries.failed(attempt.step, attempt.instance, error);
|
|
53
|
+
return UNCERTAIN;
|
|
54
|
+
});
|
|
48
55
|
if (options.closed())
|
|
49
56
|
return;
|
|
50
57
|
read.owed = !answered(result);
|
|
@@ -121,7 +128,7 @@ export function readAnswers(options) {
|
|
|
121
128
|
return;
|
|
122
129
|
read.text = text;
|
|
123
130
|
read.shown = { ...read.shown, answer: JSON.parse(text) };
|
|
124
|
-
},
|
|
131
|
+
}, uncaught);
|
|
125
132
|
}
|
|
126
133
|
reads.set(key, read);
|
|
127
134
|
return read;
|
|
@@ -148,9 +155,9 @@ export function readAnswers(options) {
|
|
|
148
155
|
reads.delete(key);
|
|
149
156
|
};
|
|
150
157
|
},
|
|
151
|
-
again() {
|
|
158
|
+
again(first = Promise.resolve()) {
|
|
152
159
|
const all = [...reads.values()];
|
|
153
|
-
const led = Promise.all(all.filter(leads).map((read) => ask(read)));
|
|
160
|
+
const led = Promise.all([first, ...all.filter(leads).map((read) => ask(read, first))]);
|
|
154
161
|
for (const read of all)
|
|
155
162
|
if (!leads(read))
|
|
156
163
|
void ask(read, led);
|
package/dist/recovery.d.ts
CHANGED
|
@@ -16,11 +16,13 @@ export type Recovery = {
|
|
|
16
16
|
attempt(intent: string, run: Attempt, options?: AttemptOptions): Promise<boolean>;
|
|
17
17
|
pending(intent: string): boolean;
|
|
18
18
|
resume(): void;
|
|
19
|
+
again(): void;
|
|
20
|
+
waits(wake: () => void): () => void;
|
|
19
21
|
cancel(intent: string): void;
|
|
20
22
|
scope(inFlight?: number): Recovery;
|
|
21
23
|
retire(): Promise<void>;
|
|
22
24
|
};
|
|
23
25
|
export declare function retryDelay(tries: number, firstMs?: number, maxMs?: number): number;
|
|
24
|
-
export declare function untilAnswered<T>(ask: () => Promise<T>, signal: AbortSignal, answered?: (answer: T) => boolean): Promise<T>;
|
|
26
|
+
export declare function untilAnswered<T>(ask: () => Promise<T>, signal: AbortSignal, answered?: (answer: T) => boolean, owner?: Recovery): Promise<T>;
|
|
25
27
|
export declare function createRecovery(options?: RecoveryOptions): Recovery;
|
|
26
28
|
//# sourceMappingURL=recovery.d.ts.map
|
package/dist/recovery.d.ts.map
CHANGED
|
@@ -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,
|
|
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,KAAK,IAAI,IAAI,CAAC;IACd,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACpC,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,EAC7C,KAAK,CAAC,EAAE,QAAQ,GACf,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAgMD,wBAAgB,cAAc,CAAC,OAAO,GAAE,eAAoB,GAAG,QAAQ,CAStE"}
|
package/dist/recovery.js
CHANGED
|
@@ -7,7 +7,7 @@ export function retryDelay(tries, firstMs = FIRST_MS, maxMs = MAX_MS) {
|
|
|
7
7
|
const longest = Math.min(maxMs, firstMs * 2 ** tries);
|
|
8
8
|
return longest / 2 + (Math.random() * longest) / 2;
|
|
9
9
|
}
|
|
10
|
-
export async function untilAnswered(ask, signal, answered = () => true) {
|
|
10
|
+
export async function untilAnswered(ask, signal, answered = () => true, owner) {
|
|
11
11
|
for (let tries = 0;; tries += 1) {
|
|
12
12
|
try {
|
|
13
13
|
const answer = await ask();
|
|
@@ -19,16 +19,16 @@ export async function untilAnswered(ask, signal, answered = () => true) {
|
|
|
19
19
|
throw error;
|
|
20
20
|
}
|
|
21
21
|
await new Promise((resume) => {
|
|
22
|
-
const
|
|
22
|
+
const done = () => {
|
|
23
23
|
clearTimeout(again);
|
|
24
|
+
signal.removeEventListener('abort', done);
|
|
25
|
+
unheld();
|
|
24
26
|
resume();
|
|
25
27
|
};
|
|
26
28
|
// A read that failed is asked again on the doubling backoff, so its asker is answered once the failure clears.
|
|
27
|
-
const again = setTimeout(()
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}, retryDelay(tries));
|
|
31
|
-
signal.addEventListener('abort', stop, { once: true });
|
|
29
|
+
const again = setTimeout(done, retryDelay(tries));
|
|
30
|
+
signal.addEventListener('abort', done, { once: true });
|
|
31
|
+
const unheld = owner?.waits(done) ?? (() => { });
|
|
32
32
|
});
|
|
33
33
|
signal.throwIfAborted();
|
|
34
34
|
}
|
|
@@ -38,6 +38,7 @@ function owner(backoff, inFlight, release = () => { }) {
|
|
|
38
38
|
const children = new Set();
|
|
39
39
|
const running = new Set();
|
|
40
40
|
const queued = [];
|
|
41
|
+
const waiting = new Set();
|
|
41
42
|
let free = inFlight;
|
|
42
43
|
let retired = false;
|
|
43
44
|
function finish(key, intent, done) {
|
|
@@ -195,6 +196,27 @@ function owner(backoff, inFlight, release = () => { }) {
|
|
|
195
196
|
launch(key, intent);
|
|
196
197
|
}
|
|
197
198
|
},
|
|
199
|
+
again() {
|
|
200
|
+
if (retired)
|
|
201
|
+
return;
|
|
202
|
+
for (const [key, intent] of [...intents]) {
|
|
203
|
+
if (intent.timer === null || intent.guided)
|
|
204
|
+
continue;
|
|
205
|
+
clearTimeout(intent.timer);
|
|
206
|
+
intent.timer = null;
|
|
207
|
+
launch(key, intent);
|
|
208
|
+
}
|
|
209
|
+
for (const wake of [...waiting])
|
|
210
|
+
wake();
|
|
211
|
+
for (const child of [...children])
|
|
212
|
+
child.again();
|
|
213
|
+
},
|
|
214
|
+
waits(wake) {
|
|
215
|
+
waiting.add(wake);
|
|
216
|
+
return () => {
|
|
217
|
+
waiting.delete(wake);
|
|
218
|
+
};
|
|
219
|
+
},
|
|
198
220
|
cancel(key) {
|
|
199
221
|
const intent = intents.get(key);
|
|
200
222
|
if (intent === undefined)
|
package/dist/refresh.js
CHANGED
|
@@ -129,7 +129,7 @@ export async function advancement(refresh, authorization, held, remodel, continu
|
|
|
129
129
|
return unconfirmed;
|
|
130
130
|
const first = await refresh(authorization, {
|
|
131
131
|
locator,
|
|
132
|
-
selection: held.replica.selection,
|
|
132
|
+
selection: held.declaration.replica.selection,
|
|
133
133
|
fromRoomVersion,
|
|
134
134
|
});
|
|
135
135
|
if (first.kind !== 'net-advancement')
|
|
@@ -154,7 +154,7 @@ export async function advancement(refresh, authorization, held, remodel, continu
|
|
|
154
154
|
return unconfirmed;
|
|
155
155
|
const page = await refresh(authorization, {
|
|
156
156
|
locator,
|
|
157
|
-
selection: held.replica.selection,
|
|
157
|
+
selection: held.declaration.replica.selection,
|
|
158
158
|
fromRoomVersion,
|
|
159
159
|
pageToken,
|
|
160
160
|
});
|
package/dist/refusal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refusal.d.ts","sourceRoot":"","sources":["../src/refusal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"refusal.d.ts","sourceRoot":"","sources":["../src/refusal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAQpD,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,iBAiDxC"}
|
package/dist/refusal.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { changeSet, mergeChangeSets } from './change-set.js';
|
|
2
2
|
import { composedOf } from './collection.js';
|
|
3
|
+
import { uncaught } from './failure.js';
|
|
3
4
|
import { listedLocators } from './listing.js';
|
|
4
5
|
import { prepare } from './preparation.js';
|
|
5
6
|
import { storedRecord } from './replica.js';
|
|
6
7
|
import { emitRefusal } from './shown.js';
|
|
7
8
|
export async function refuse(runtime, reason, provider = null) {
|
|
8
|
-
const { store, socket,
|
|
9
|
+
const { store, socket, presence } = runtime;
|
|
9
10
|
socket.session.set({ paused: true });
|
|
10
11
|
socket.abortReads();
|
|
11
12
|
try {
|
|
@@ -28,13 +29,13 @@ export async function refuse(runtime, reason, provider = null) {
|
|
|
28
29
|
}),
|
|
29
30
|
});
|
|
30
31
|
}
|
|
31
|
-
catch {
|
|
32
|
-
|
|
32
|
+
catch (error) {
|
|
33
|
+
uncaught(error);
|
|
33
34
|
}
|
|
34
35
|
const listedNow = listedLocators(runtime, held);
|
|
35
36
|
for (const locator of listedNow) {
|
|
36
37
|
if (!held.has(locator))
|
|
37
|
-
|
|
38
|
+
presence.modelled(locator, revoked);
|
|
38
39
|
}
|
|
39
40
|
store.changed(mergeChangeSets(listedNow.map((locator) => changeSet(locator, { documents: null, room: true }))));
|
|
40
41
|
prepare(runtime);
|
|
@@ -49,7 +50,6 @@ export async function refuse(runtime, reason, provider = null) {
|
|
|
49
50
|
refusal: provider,
|
|
50
51
|
},
|
|
51
52
|
});
|
|
52
|
-
journal.record(`connection refused ${reason}`);
|
|
53
53
|
emitRefusal(runtime);
|
|
54
54
|
}
|
|
55
55
|
}
|