@agentshouse/mdruntime-adapter 0.1.0-ce3fe65a95f49 → 0.1.0-ce5ef9afd7e9a
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/AGENTS.md +289 -279
- package/dist/actions.d.ts +13 -5
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +85 -115
- package/dist/adapter.d.ts +1 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +292 -130
- package/dist/discovery.d.ts +5 -3
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +29 -10
- package/dist/gather.d.ts +1 -1
- package/dist/gather.d.ts.map +1 -1
- package/dist/gather.js +4 -14
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/part.d.ts +13 -0
- package/dist/part.d.ts.map +1 -0
- package/dist/part.js +80 -0
- package/dist/read.d.ts +64 -20
- package/dist/read.d.ts.map +1 -1
- package/dist/read.js +296 -105
- package/dist/referrer.d.ts +2 -0
- package/dist/referrer.d.ts.map +1 -1
- package/dist/referrer.js +8 -2
- package/dist/room-types.d.ts +6 -0
- package/dist/room-types.d.ts.map +1 -0
- package/dist/room-types.js +66 -0
- package/dist/site.d.ts +1 -1
- package/dist/site.d.ts.map +1 -1
- package/dist/site.js +143 -118
- package/dist/stream.d.ts +5 -4
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +275 -77
- package/dist/transport.d.ts +46 -7
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +1 -0
- package/dist/upload.d.ts +12 -0
- package/dist/upload.d.ts.map +1 -0
- package/dist/upload.js +52 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/write.d.ts +12 -1
- package/dist/write.d.ts.map +1 -1
- package/dist/write.js +96 -44
- package/package.json +2 -2
- package/dist/handed.d.ts +0 -15
- package/dist/handed.d.ts.map +0 -1
- package/dist/handed.js +0 -38
package/dist/stream.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { ROW_WEIGHT, } from '@agentshouse/mdruntime';
|
|
1
2
|
import { acceptedMessage } from './actions.js';
|
|
2
3
|
import { sha256Hex } from './digest.js';
|
|
3
|
-
import { binaryFileOf, headChange } from './read.js';
|
|
4
|
+
import { answered, answering, binaryFileOf, folded, forgotten, headChange, revised, } from './read.js';
|
|
4
5
|
import { roomVersion } from './version.js';
|
|
5
6
|
const HELD_FRAMES_MAX = 256;
|
|
6
7
|
function turnOperation(frame) {
|
|
@@ -15,6 +16,7 @@ function listedConversation(listed) {
|
|
|
15
16
|
created: listed.created_at,
|
|
16
17
|
finished: listed.finished_at,
|
|
17
18
|
outcome: listed.outcome,
|
|
19
|
+
waiting: listed.waiting,
|
|
18
20
|
};
|
|
19
21
|
}
|
|
20
22
|
function position(value) {
|
|
@@ -53,7 +55,9 @@ function assembled(entries) {
|
|
|
53
55
|
async function verified(entries) {
|
|
54
56
|
try {
|
|
55
57
|
for (const entry of entries) {
|
|
56
|
-
if (
|
|
58
|
+
if (entry.text === undefined || entry.sha256 === undefined)
|
|
59
|
+
continue;
|
|
60
|
+
if ((await sha256Hex(entry.text)) !== entry.sha256)
|
|
57
61
|
return false;
|
|
58
62
|
}
|
|
59
63
|
return true;
|
|
@@ -62,10 +66,34 @@ async function verified(entries) {
|
|
|
62
66
|
return false;
|
|
63
67
|
}
|
|
64
68
|
}
|
|
69
|
+
function resumed(kept, frame) {
|
|
70
|
+
const last = frame.entries.at(-1);
|
|
71
|
+
const point = { parts: frame.index + 1, from: frame.from, target: frame.target };
|
|
72
|
+
if (last?.continued !== true)
|
|
73
|
+
return { ...point, handled: frame.handled, piece: null };
|
|
74
|
+
const text = last.text?.length ?? 0;
|
|
75
|
+
if (last.kind !== 'piece') {
|
|
76
|
+
return last.sha256 === undefined
|
|
77
|
+
? kept.resume
|
|
78
|
+
: { ...point, handled: frame.handled, piece: { sha256: last.sha256, offset: text } };
|
|
79
|
+
}
|
|
80
|
+
const piece = kept.resume?.piece ?? null;
|
|
81
|
+
if (piece === null)
|
|
82
|
+
return kept.resume;
|
|
83
|
+
const pieces = frame.entries.reduce((sum, entry) => sum + (entry.kind === 'piece' ? (entry.text?.length ?? 0) : 0), 0);
|
|
84
|
+
return {
|
|
85
|
+
...point,
|
|
86
|
+
handled: frame.handled,
|
|
87
|
+
piece: { sha256: piece.sha256, offset: piece.offset + pieces },
|
|
88
|
+
};
|
|
89
|
+
}
|
|
65
90
|
export function houseNotifications(transport, mode) {
|
|
66
91
|
const stream = transport.stream;
|
|
67
92
|
const lines = new Map();
|
|
68
|
-
const
|
|
93
|
+
const kept = new Map();
|
|
94
|
+
let receipts = null;
|
|
95
|
+
let loaded = Promise.resolve();
|
|
96
|
+
let acknowledging = null;
|
|
69
97
|
let receiving = Promise.resolve();
|
|
70
98
|
let verifying = 0;
|
|
71
99
|
const locators = new Map();
|
|
@@ -85,7 +113,10 @@ export function houseNotifications(transport, mode) {
|
|
|
85
113
|
event.kind === 'questions' ||
|
|
86
114
|
event.kind === 'process' ||
|
|
87
115
|
event.kind === 'commands' ||
|
|
88
|
-
event.kind === 'options'
|
|
116
|
+
event.kind === 'options' ||
|
|
117
|
+
event.kind === 'starting' ||
|
|
118
|
+
event.kind === 'link' ||
|
|
119
|
+
event.kind === 'deliveries') {
|
|
89
120
|
live.add(event.conversation);
|
|
90
121
|
}
|
|
91
122
|
for (const observer of conversationObservers)
|
|
@@ -93,7 +124,7 @@ export function houseNotifications(transport, mode) {
|
|
|
93
124
|
}
|
|
94
125
|
function reopened(next) {
|
|
95
126
|
opening = next;
|
|
96
|
-
|
|
127
|
+
acknowledging = next;
|
|
97
128
|
const gapped = new Set([...replicated, ...live]);
|
|
98
129
|
live.clear();
|
|
99
130
|
for (const conversation of gapped)
|
|
@@ -131,6 +162,18 @@ export function houseNotifications(transport, mode) {
|
|
|
131
162
|
emitConversation({ kind: 'options', conversation, options: structuredClone(frame.options) });
|
|
132
163
|
return;
|
|
133
164
|
}
|
|
165
|
+
if (frame.type === 'starting') {
|
|
166
|
+
emitConversation({ kind: 'starting', conversation, step: frame.step });
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
if (frame.type === 'link') {
|
|
170
|
+
emitConversation({ kind: 'link', conversation, connected: frame.connected });
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
if (frame.type === 'deliveries') {
|
|
174
|
+
emitConversation({ kind: 'deliveries', conversation, unknown: [...frame.unknown] });
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
134
177
|
if (frame.type === 'interactions') {
|
|
135
178
|
emitConversation({
|
|
136
179
|
kind: 'questions',
|
|
@@ -155,46 +198,162 @@ export function houseNotifications(transport, mode) {
|
|
|
155
198
|
if (line !== undefined)
|
|
156
199
|
lines.set(authority, { ...line, frames: [] });
|
|
157
200
|
}
|
|
158
|
-
function
|
|
159
|
-
const held =
|
|
160
|
-
if (
|
|
161
|
-
|
|
201
|
+
async function forget(carries) {
|
|
202
|
+
const held = carries.filter((carry) => kept.delete(carry));
|
|
203
|
+
if (held.length > 0)
|
|
204
|
+
await receipts?.drop(held).catch(() => { });
|
|
205
|
+
}
|
|
206
|
+
async function lost(authority, carry) {
|
|
207
|
+
interrupt(authority);
|
|
208
|
+
await forget([carry]);
|
|
209
|
+
}
|
|
210
|
+
async function stage(frame, via) {
|
|
211
|
+
await loaded;
|
|
212
|
+
const port = receipts;
|
|
213
|
+
if (port === null)
|
|
162
214
|
return;
|
|
163
|
-
|
|
164
|
-
if (held
|
|
165
|
-
staged.delete(frame.authority);
|
|
215
|
+
const held = kept.get(frame.carry);
|
|
216
|
+
if (held === undefined && frame.index !== 0) {
|
|
166
217
|
interrupt(frame.authority);
|
|
167
218
|
return;
|
|
168
219
|
}
|
|
169
|
-
held
|
|
170
|
-
|
|
220
|
+
if (held !== undefined &&
|
|
221
|
+
(held.fenced !== null || frame.index > held.parts || frame.index < (held.resume?.parts ?? 0))) {
|
|
222
|
+
await lost(frame.authority, frame.carry);
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
if (held === undefined) {
|
|
226
|
+
await forget([...kept.values()]
|
|
227
|
+
.filter((other) => other.authority === frame.authority && other.fenced === null)
|
|
228
|
+
.map((other) => other.carry));
|
|
229
|
+
}
|
|
230
|
+
const start = held ?? {
|
|
231
|
+
authority: frame.authority,
|
|
232
|
+
carry: frame.carry,
|
|
233
|
+
logEpoch: lines.get(frame.authority)?.logEpoch ?? null,
|
|
234
|
+
after: frame.after,
|
|
235
|
+
parts: 0,
|
|
236
|
+
resume: null,
|
|
237
|
+
fenced: null,
|
|
238
|
+
};
|
|
239
|
+
const next = { ...start, parts: frame.index + 1, resume: resumed(start, frame) };
|
|
240
|
+
const part = { entries: frame.entries };
|
|
241
|
+
try {
|
|
242
|
+
await port.keep(frame.carry, next, { index: frame.index, value: part });
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
await lost(frame.authority, frame.carry);
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
kept.set(frame.carry, next);
|
|
249
|
+
via?.received(frame.authority, frame.carry, frame.index);
|
|
171
250
|
}
|
|
172
|
-
function
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
const entries =
|
|
251
|
+
async function keptEntries(carry, parts) {
|
|
252
|
+
if (parts === 0)
|
|
253
|
+
return [];
|
|
254
|
+
if (receipts === null)
|
|
255
|
+
return null;
|
|
256
|
+
const read = (await receipts.parts(carry, parts));
|
|
257
|
+
if (read.length !== parts)
|
|
258
|
+
return null;
|
|
259
|
+
const entries = assembled(read.flatMap((part) => part.entries));
|
|
260
|
+
return entries !== null && (await verified(entries)) ? entries : null;
|
|
261
|
+
}
|
|
262
|
+
async function carried(frame) {
|
|
263
|
+
await loaded;
|
|
264
|
+
const held = kept.get(frame.carry);
|
|
265
|
+
if (frame.parts > 0 && held?.parts !== frame.parts) {
|
|
266
|
+
await lost(frame.authority, frame.carry);
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
const entries = await keptEntries(frame.carry, frame.parts).catch(() => null);
|
|
181
270
|
if (entries === null) {
|
|
182
|
-
|
|
271
|
+
await lost(frame.authority, frame.carry);
|
|
183
272
|
return;
|
|
184
273
|
}
|
|
185
|
-
const
|
|
186
|
-
|
|
187
|
-
|
|
274
|
+
const fenced = {
|
|
275
|
+
...(held ?? {
|
|
276
|
+
authority: frame.authority,
|
|
277
|
+
carry: frame.carry,
|
|
278
|
+
logEpoch: frame.log_epoch,
|
|
279
|
+
after: frame.after,
|
|
280
|
+
parts: 0,
|
|
281
|
+
resume: null,
|
|
282
|
+
}),
|
|
283
|
+
after: frame.after,
|
|
284
|
+
fenced: { position: frame.position, logEpoch: frame.log_epoch },
|
|
285
|
+
};
|
|
286
|
+
try {
|
|
287
|
+
await receipts?.keep(frame.carry, fenced);
|
|
288
|
+
}
|
|
289
|
+
catch {
|
|
290
|
+
await lost(frame.authority, frame.carry);
|
|
188
291
|
return;
|
|
189
292
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
publish(frame, entries);
|
|
193
|
-
else
|
|
194
|
-
interrupt(frame.authority);
|
|
195
|
-
});
|
|
293
|
+
kept.set(frame.carry, fenced);
|
|
294
|
+
publish(frame, entries);
|
|
196
295
|
}
|
|
197
|
-
function
|
|
296
|
+
async function load(port) {
|
|
297
|
+
try {
|
|
298
|
+
for (const { key, head } of await port.heads())
|
|
299
|
+
kept.set(key, head);
|
|
300
|
+
}
|
|
301
|
+
catch {
|
|
302
|
+
kept.clear();
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
async function restored(room) {
|
|
306
|
+
const line = lines.get(room.authority);
|
|
307
|
+
let at = room.position;
|
|
308
|
+
const chain = [];
|
|
309
|
+
for (;;) {
|
|
310
|
+
const next = [...kept.values()].find((carry) => carry.authority === room.authority &&
|
|
311
|
+
carry.after === at &&
|
|
312
|
+
carry.fenced?.logEpoch === room.log_epoch);
|
|
313
|
+
if (next?.fenced == null)
|
|
314
|
+
break;
|
|
315
|
+
const entries = await keptEntries(next.carry, next.parts).catch(() => null);
|
|
316
|
+
if (entries === null)
|
|
317
|
+
break;
|
|
318
|
+
chain.push({ carry: next, entries });
|
|
319
|
+
at = next.fenced.position;
|
|
320
|
+
}
|
|
321
|
+
const partial = [...kept.values()].find((carry) => carry.authority === room.authority &&
|
|
322
|
+
carry.fenced === null &&
|
|
323
|
+
carry.logEpoch === room.log_epoch &&
|
|
324
|
+
carry.after === at &&
|
|
325
|
+
carry.resume !== null &&
|
|
326
|
+
carry.resume.parts > 0);
|
|
327
|
+
const stale = [...kept.values()].filter((carry) => carry.authority === room.authority &&
|
|
328
|
+
carry !== partial &&
|
|
329
|
+
!chain.some((link) => link.carry === carry));
|
|
330
|
+
await forget(stale.map((carry) => carry.carry));
|
|
331
|
+
if (line !== undefined && line.logEpoch === room.log_epoch && chain.length > 0) {
|
|
332
|
+
const frames = chain.map(({ carry, entries }) => ({
|
|
333
|
+
after: BigInt(carry.after),
|
|
334
|
+
position: BigInt(carry.fenced.position),
|
|
335
|
+
entries,
|
|
336
|
+
}));
|
|
337
|
+
lines.set(room.authority, { ...line, frames: [...line.frames, ...frames] });
|
|
338
|
+
}
|
|
339
|
+
return {
|
|
340
|
+
...room,
|
|
341
|
+
position: at,
|
|
342
|
+
...(partial?.resume == null
|
|
343
|
+
? {}
|
|
344
|
+
: {
|
|
345
|
+
carry: {
|
|
346
|
+
id: partial.carry,
|
|
347
|
+
parts: partial.resume.parts,
|
|
348
|
+
from: partial.resume.from,
|
|
349
|
+
target: partial.resume.target,
|
|
350
|
+
handled: partial.resume.handled,
|
|
351
|
+
...(partial.resume.piece === null ? {} : { piece: partial.resume.piece }),
|
|
352
|
+
},
|
|
353
|
+
}),
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
function handle(frame, via) {
|
|
198
357
|
if (frame.type === 'signal') {
|
|
199
358
|
const mode = frame.service_mode;
|
|
200
359
|
if (mode !== 'open' && mode !== 'write-halted')
|
|
@@ -210,6 +369,10 @@ export function houseNotifications(transport, mode) {
|
|
|
210
369
|
});
|
|
211
370
|
return;
|
|
212
371
|
}
|
|
372
|
+
if (frame.type === 'authority_changed') {
|
|
373
|
+
emit({ kind: 'authority-changed', scope: { authorities: frame.rooms } });
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
213
376
|
if (frame.type === 'conversations') {
|
|
214
377
|
emitConversation({ kind: 'list', entries: frame.conversations.map(listedConversation) });
|
|
215
378
|
return;
|
|
@@ -226,15 +389,16 @@ export function houseNotifications(transport, mode) {
|
|
|
226
389
|
frame.type === 'process' ||
|
|
227
390
|
frame.type === 'commands' ||
|
|
228
391
|
frame.type === 'options' ||
|
|
392
|
+
frame.type === 'starting' ||
|
|
393
|
+
frame.type === 'link' ||
|
|
394
|
+
frame.type === 'deliveries' ||
|
|
229
395
|
frame.type === 'interactions' ||
|
|
230
396
|
frame.type === 'message') {
|
|
231
397
|
converse(frame);
|
|
232
398
|
return;
|
|
233
399
|
}
|
|
234
|
-
if (frame.type === 'part')
|
|
235
|
-
stage(frame);
|
|
236
|
-
return;
|
|
237
|
-
}
|
|
400
|
+
if (frame.type === 'part')
|
|
401
|
+
return stage(frame, via);
|
|
238
402
|
if (frame.type === 'carried')
|
|
239
403
|
return carried(frame);
|
|
240
404
|
}
|
|
@@ -262,8 +426,9 @@ export function houseNotifications(transport, mode) {
|
|
|
262
426
|
announce(frame.authority, { position: frame.position, logEpoch: frame.log_epoch });
|
|
263
427
|
}
|
|
264
428
|
stream.observe((frame) => {
|
|
429
|
+
const via = acknowledging;
|
|
265
430
|
if (verifying === 0) {
|
|
266
|
-
const handled = handle(frame);
|
|
431
|
+
const handled = handle(frame, via);
|
|
267
432
|
if (handled === undefined)
|
|
268
433
|
return;
|
|
269
434
|
verifying += 1;
|
|
@@ -274,16 +439,16 @@ export function houseNotifications(transport, mode) {
|
|
|
274
439
|
}
|
|
275
440
|
verifying += 1;
|
|
276
441
|
receiving = receiving
|
|
277
|
-
.then(() => handle(frame))
|
|
442
|
+
.then(() => handle(frame, via))
|
|
278
443
|
.finally(() => {
|
|
279
444
|
verifying -= 1;
|
|
280
445
|
});
|
|
281
446
|
});
|
|
282
447
|
stream.opened(reopened);
|
|
283
|
-
stream.closed((revoked) => {
|
|
448
|
+
stream.closed(({ revoked, lost }) => {
|
|
284
449
|
opening = null;
|
|
285
|
-
|
|
286
|
-
emit({ kind: 'closed', revoked });
|
|
450
|
+
acknowledging = null;
|
|
451
|
+
emit({ kind: 'closed', revoked, lost });
|
|
287
452
|
});
|
|
288
453
|
return {
|
|
289
454
|
runtime,
|
|
@@ -306,8 +471,12 @@ export function houseNotifications(transport, mode) {
|
|
|
306
471
|
};
|
|
307
472
|
},
|
|
308
473
|
},
|
|
309
|
-
observe(notify) {
|
|
474
|
+
observe(notify, port) {
|
|
310
475
|
observers.add(notify);
|
|
476
|
+
if (receipts === null) {
|
|
477
|
+
receipts = port;
|
|
478
|
+
loaded = load(port);
|
|
479
|
+
}
|
|
311
480
|
if (opening !== null) {
|
|
312
481
|
queueMicrotask(() => {
|
|
313
482
|
if (observers.has(notify))
|
|
@@ -328,7 +497,30 @@ export function houseNotifications(transport, mode) {
|
|
|
328
497
|
}
|
|
329
498
|
const current = opening;
|
|
330
499
|
opening = null;
|
|
331
|
-
current
|
|
500
|
+
if (current === null)
|
|
501
|
+
return;
|
|
502
|
+
void loaded
|
|
503
|
+
.then(() => Promise.all(rooms.map(restored)))
|
|
504
|
+
.then((presented) => {
|
|
505
|
+
current.hold(presented, runtime);
|
|
506
|
+
for (const [index, room] of presented.entries()) {
|
|
507
|
+
if (room.position === rooms[index].position)
|
|
508
|
+
continue;
|
|
509
|
+
announce(room.authority, { position: room.position, logEpoch: room.log_epoch });
|
|
510
|
+
}
|
|
511
|
+
});
|
|
512
|
+
},
|
|
513
|
+
published(locator, at) {
|
|
514
|
+
const authority = [...locators].find(([, held]) => held.includes(locator))?.[0];
|
|
515
|
+
const reached = position(at.position);
|
|
516
|
+
if (authority === undefined || reached === null)
|
|
517
|
+
return;
|
|
518
|
+
void forget([...kept.values()]
|
|
519
|
+
.filter((carry) => carry.authority === authority &&
|
|
520
|
+
carry.fenced !== null &&
|
|
521
|
+
carry.fenced.logEpoch === at.logEpoch &&
|
|
522
|
+
BigInt(carry.fenced.position) <= reached)
|
|
523
|
+
.map((carry) => carry.carry));
|
|
332
524
|
},
|
|
333
525
|
reopen() {
|
|
334
526
|
const current = opening;
|
|
@@ -347,6 +539,9 @@ export function houseNotifications(transport, mode) {
|
|
|
347
539
|
if (!locators.has(authority))
|
|
348
540
|
lines.delete(authority);
|
|
349
541
|
}
|
|
542
|
+
void loaded.then(() => forget([...kept.values()]
|
|
543
|
+
.filter((carry) => !locators.has(carry.authority))
|
|
544
|
+
.map((carry) => carry.carry)));
|
|
350
545
|
},
|
|
351
546
|
reach(authority, at) {
|
|
352
547
|
const line = lines.get(authority);
|
|
@@ -361,7 +556,18 @@ export function houseNotifications(transport, mode) {
|
|
|
361
556
|
held,
|
|
362
557
|
});
|
|
363
558
|
},
|
|
364
|
-
|
|
559
|
+
edited(tracked, from) {
|
|
560
|
+
const line = lines.get(tracked.authority);
|
|
561
|
+
const start = position(from.position);
|
|
562
|
+
if (line === undefined || start === null || line.logEpoch !== from.logEpoch)
|
|
563
|
+
return [];
|
|
564
|
+
return [
|
|
565
|
+
...new Set(line.frames
|
|
566
|
+
.filter((frame) => frame.position > start)
|
|
567
|
+
.flatMap((frame) => frame.entries.flatMap((entry) => entry.kind === 'edited' && entry.revision !== undefined ? [entry.path] : []))),
|
|
568
|
+
];
|
|
569
|
+
},
|
|
570
|
+
*advance(tracked, from, holds) {
|
|
365
571
|
const line = lines.get(tracked.authority);
|
|
366
572
|
const start = position(from.position);
|
|
367
573
|
if (line === undefined || start === null || line.logEpoch !== from.logEpoch)
|
|
@@ -370,36 +576,26 @@ export function houseNotifications(transport, mode) {
|
|
|
370
576
|
const first = pending[0];
|
|
371
577
|
if (first === undefined || first.after > start)
|
|
372
578
|
return null;
|
|
373
|
-
const
|
|
374
|
-
const revisions = {};
|
|
375
|
-
const changes = {};
|
|
376
|
-
const binaryFiles = {};
|
|
377
|
-
const removals = [];
|
|
378
|
-
const applied = [];
|
|
579
|
+
const answer = answering();
|
|
379
580
|
const schemas = new Map();
|
|
380
|
-
const forget = (path) => {
|
|
381
|
-
delete documents[path];
|
|
382
|
-
delete revisions[path];
|
|
383
|
-
delete changes[path];
|
|
384
|
-
delete binaryFiles[path];
|
|
385
|
-
const removed = removals.indexOf(path);
|
|
386
|
-
if (removed !== -1)
|
|
387
|
-
removals.splice(removed, 1);
|
|
388
|
-
};
|
|
389
581
|
for (const frame of pending) {
|
|
390
582
|
for (const entry of frame.entries) {
|
|
583
|
+
yield ROW_WEIGHT + (entry.text?.length ?? 0);
|
|
584
|
+
if (entry.kind === 'folder') {
|
|
585
|
+
folded(answer, entry.path, entry.removed === true);
|
|
586
|
+
continue;
|
|
587
|
+
}
|
|
391
588
|
if (entry.kind === 'edited' &&
|
|
392
589
|
entry.revision !== undefined &&
|
|
393
590
|
holds?.(entry.path, entry.revision) === true) {
|
|
394
|
-
|
|
591
|
+
forgotten(answer, entry.path);
|
|
395
592
|
continue;
|
|
396
593
|
}
|
|
397
|
-
applied.push(entry);
|
|
398
594
|
if (tracked.schemas.includes(entry.path))
|
|
399
595
|
schemas.set(entry.path, entry);
|
|
400
596
|
if (entry.kind === 'removed') {
|
|
401
|
-
|
|
402
|
-
removals.
|
|
597
|
+
forgotten(answer, entry.path);
|
|
598
|
+
answer.removals.add(entry.path);
|
|
403
599
|
continue;
|
|
404
600
|
}
|
|
405
601
|
const binary = binaryFileOf(entry);
|
|
@@ -410,31 +606,33 @@ export function houseNotifications(transport, mode) {
|
|
|
410
606
|
const head = headChange(entry);
|
|
411
607
|
if (head === null)
|
|
412
608
|
return null;
|
|
413
|
-
|
|
609
|
+
forgotten(answer, entry.path);
|
|
414
610
|
if (binary === undefined)
|
|
415
|
-
documents
|
|
611
|
+
answer.documents.set(entry.path, entry.text);
|
|
416
612
|
else
|
|
417
|
-
binaryFiles
|
|
613
|
+
answer.binaryFiles.set(entry.path, binary);
|
|
418
614
|
const revision = entry.revision ?? binary?.sha256;
|
|
419
615
|
if (revision !== undefined)
|
|
420
|
-
|
|
616
|
+
revised(answer, entry.path, revision);
|
|
421
617
|
if (head !== undefined)
|
|
422
|
-
changes
|
|
618
|
+
answer.changes.set(entry.path, head);
|
|
423
619
|
}
|
|
424
620
|
}
|
|
425
621
|
const last = pending.at(-1);
|
|
426
|
-
lines.
|
|
622
|
+
const current = lines.get(tracked.authority);
|
|
623
|
+
if (current?.logEpoch === line.logEpoch) {
|
|
624
|
+
lines.set(tracked.authority, {
|
|
625
|
+
...current,
|
|
626
|
+
frames: current.frames.filter((frame) => frame.position > start),
|
|
627
|
+
held: current.held !== null && current.held > last.position ? current.held : last.position,
|
|
628
|
+
});
|
|
629
|
+
}
|
|
427
630
|
return {
|
|
428
631
|
page: {
|
|
429
632
|
kind: 'net-advancement',
|
|
430
633
|
roomVersion: roomVersion({ position: last.position.toString(), logEpoch: line.logEpoch }),
|
|
431
|
-
|
|
432
|
-
revisions,
|
|
433
|
-
changes,
|
|
434
|
-
binaryFiles,
|
|
435
|
-
removals: removals.sort(),
|
|
634
|
+
...(yield* answered(answer)),
|
|
436
635
|
},
|
|
437
|
-
entries: applied,
|
|
438
636
|
schemas,
|
|
439
637
|
};
|
|
440
638
|
},
|
package/dist/transport.d.ts
CHANGED
|
@@ -15,23 +15,24 @@ export type HouseDoorAnswer = {
|
|
|
15
15
|
body: unknown;
|
|
16
16
|
};
|
|
17
17
|
export declare const DOOR_FILES_GET = "/door/files/get";
|
|
18
|
+
export declare const DOOR_FILES_FINISH = "/door/files/finish";
|
|
18
19
|
export declare const SITE_FILES = "/_house/files/";
|
|
19
20
|
export declare const SITE_FILE_RECORD = "record";
|
|
20
|
-
export type HouseByteAct = 'authored_batch_upload'
|
|
21
|
-
export type HouseByteBody = string | ArrayBuffer | Uint8Array | Blob;
|
|
21
|
+
export type HouseByteAct = 'authored_batch_upload';
|
|
22
22
|
export type HouseBytesAnswer = {
|
|
23
23
|
status: number;
|
|
24
|
-
|
|
24
|
+
body: ReadableStream<Uint8Array> | null;
|
|
25
|
+
mediaType: string;
|
|
25
26
|
};
|
|
26
27
|
export type HouseByteTransfer = {
|
|
27
28
|
act: HouseByteAct;
|
|
28
29
|
url: string;
|
|
29
|
-
body:
|
|
30
|
-
operation?: string;
|
|
30
|
+
body: string;
|
|
31
31
|
};
|
|
32
32
|
export type HouseStreamEntry = {
|
|
33
33
|
path: string;
|
|
34
|
-
kind: 'edited' | 'removed' | 'piece';
|
|
34
|
+
kind: 'edited' | 'removed' | 'piece' | 'folder';
|
|
35
|
+
removed?: true;
|
|
35
36
|
revision?: string;
|
|
36
37
|
sha256?: string;
|
|
37
38
|
text?: string;
|
|
@@ -58,12 +59,17 @@ export type HouseListedConversation = {
|
|
|
58
59
|
created_at: string;
|
|
59
60
|
finished_at: string | null;
|
|
60
61
|
outcome: string | null;
|
|
62
|
+
waiting: boolean;
|
|
61
63
|
};
|
|
62
64
|
export type HouseStreamFrame = {
|
|
63
65
|
type: 'part';
|
|
64
66
|
authority: string;
|
|
65
67
|
carry: string;
|
|
66
68
|
index: number;
|
|
69
|
+
after: string;
|
|
70
|
+
from: string;
|
|
71
|
+
target: string;
|
|
72
|
+
handled: number;
|
|
67
73
|
entries: readonly HouseStreamEntry[];
|
|
68
74
|
} | {
|
|
69
75
|
type: 'carried';
|
|
@@ -76,6 +82,9 @@ export type HouseStreamFrame = {
|
|
|
76
82
|
} | {
|
|
77
83
|
type: 'opening';
|
|
78
84
|
expired: readonly string[];
|
|
85
|
+
} | {
|
|
86
|
+
type: 'authority_changed';
|
|
87
|
+
rooms: readonly string[];
|
|
79
88
|
} | ({
|
|
80
89
|
type: 'turn';
|
|
81
90
|
conversation_id: string;
|
|
@@ -88,6 +97,10 @@ export type HouseStreamFrame = {
|
|
|
88
97
|
type: 'interactions';
|
|
89
98
|
conversation_id: string;
|
|
90
99
|
interactions: readonly unknown[];
|
|
100
|
+
} | {
|
|
101
|
+
type: 'deliveries';
|
|
102
|
+
conversation_id: string;
|
|
103
|
+
unknown: readonly string[];
|
|
91
104
|
} | {
|
|
92
105
|
type: 'process';
|
|
93
106
|
conversation_id: string;
|
|
@@ -100,6 +113,14 @@ export type HouseStreamFrame = {
|
|
|
100
113
|
type: 'options';
|
|
101
114
|
conversation_id: string;
|
|
102
115
|
options: LiveFact<'options'>['options'];
|
|
116
|
+
} | {
|
|
117
|
+
type: 'starting';
|
|
118
|
+
conversation_id: string;
|
|
119
|
+
step: string | null;
|
|
120
|
+
} | {
|
|
121
|
+
type: 'link';
|
|
122
|
+
conversation_id: string;
|
|
123
|
+
connected: boolean;
|
|
103
124
|
} | {
|
|
104
125
|
type: 'conversations';
|
|
105
126
|
conversations: readonly HouseListedConversation[];
|
|
@@ -113,19 +134,36 @@ export type HouseStreamFrame = {
|
|
|
113
134
|
type: 'signal';
|
|
114
135
|
service_mode: string;
|
|
115
136
|
};
|
|
137
|
+
export type HouseHeldCarry = {
|
|
138
|
+
id: string;
|
|
139
|
+
parts: number;
|
|
140
|
+
from: string;
|
|
141
|
+
target: string;
|
|
142
|
+
handled: number;
|
|
143
|
+
piece?: {
|
|
144
|
+
sha256: string;
|
|
145
|
+
offset: number;
|
|
146
|
+
};
|
|
147
|
+
};
|
|
116
148
|
export type HouseHeldRoom = {
|
|
117
149
|
authority: string;
|
|
118
150
|
position: string;
|
|
119
151
|
log_epoch: string;
|
|
152
|
+
carry?: HouseHeldCarry;
|
|
120
153
|
};
|
|
121
154
|
export type HouseOpening = {
|
|
122
155
|
hold(rooms: readonly HouseHeldRoom[], runtime: string): void;
|
|
156
|
+
received(authority: string, carry: string, index: number): void;
|
|
123
157
|
close(): void;
|
|
124
158
|
};
|
|
159
|
+
export type HouseClosing = {
|
|
160
|
+
revoked: boolean;
|
|
161
|
+
lost: boolean;
|
|
162
|
+
};
|
|
125
163
|
export type HouseStream = {
|
|
126
164
|
observe(receive: (frame: HouseStreamFrame) => void): () => void;
|
|
127
165
|
opened(notify: (opening: HouseOpening) => void): () => void;
|
|
128
|
-
closed(notify: (
|
|
166
|
+
closed(notify: (closing: HouseClosing) => void): () => void;
|
|
129
167
|
};
|
|
130
168
|
export type HouseDoor = {
|
|
131
169
|
door(route: string, body: unknown): Promise<HouseDoorAnswer>;
|
|
@@ -133,6 +171,7 @@ export type HouseDoor = {
|
|
|
133
171
|
};
|
|
134
172
|
export type HouseTransport = HouseDoor & {
|
|
135
173
|
transfer(request: HouseByteTransfer): Promise<HouseDoorAnswer>;
|
|
174
|
+
put(url: string, body: Blob): Promise<number>;
|
|
136
175
|
download(url: string): Promise<HouseBytesAnswer>;
|
|
137
176
|
};
|
|
138
177
|
export type HouseSiteTransport = HouseDoor & {
|
package/dist/transport.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE/E,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAE9C,eAAO,MAAM,cAAc,oBAAoB,CAAC;AAEhD,eAAO,MAAM,cAAc,oBAAoB,CAAC;AAEhD,eAAO,MAAM,UAAU,gBAAgB,CAAC;AAExC,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AAEtD,eAAO,MAAM,cAAc,oBAAoB,CAAC;AAEhD,eAAO,MAAM,kBAAkB,0BAA0B,CAAC;AAE1D,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAE7D,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAE5D,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AAEtD,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,MAAM,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,cAAc,oBAAoB,CAAC;AAEhD,eAAO,MAAM,UAAU,mBAAmB,CAAC;AAE3C,eAAO,MAAM,gBAAgB,WAAW,CAAC;AAEzC,MAAM,MAAM,YAAY,GAAG,uBAAuB,
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
|
package/dist/transport.js
CHANGED
|
@@ -9,5 +9,6 @@ export const SITE_DOOR_BOOTSTRAP = '/_house/door/bootstrap/';
|
|
|
9
9
|
export const SITE_DOOR_ENUMERATE = '/_house/door/enumerate';
|
|
10
10
|
export const SITE_DOOR_SUBMIT = '/_house/door/submit';
|
|
11
11
|
export const DOOR_FILES_GET = '/door/files/get';
|
|
12
|
+
export const DOOR_FILES_FINISH = '/door/files/finish';
|
|
12
13
|
export const SITE_FILES = '/_house/files/';
|
|
13
14
|
export const SITE_FILE_RECORD = 'record';
|