@agentshouse/mdruntime-adapter 0.1.0-ceda7e87cc6e8 → 0.1.0-cedb8e57837a7
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 +281 -276
- package/dist/actions.d.ts +23 -0
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +54 -35
- package/dist/adapter.d.ts +1 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +258 -73
- 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/handed.d.ts +6 -6
- package/dist/handed.d.ts.map +1 -1
- package/dist/handed.js +36 -29
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/model.d.ts +0 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +0 -3
- package/dist/read.d.ts +44 -7
- package/dist/read.d.ts.map +1 -1
- package/dist/read.js +177 -59
- package/dist/refusal.d.ts.map +1 -1
- package/dist/refusal.js +2 -1
- package/dist/site.d.ts +1 -1
- package/dist/site.d.ts.map +1 -1
- package/dist/site.js +159 -62
- package/dist/stream.d.ts +4 -4
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +334 -43
- package/dist/transport.d.ts +49 -4
- package/dist/transport.d.ts.map +1 -1
- 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 +85 -40
- package/package.json +2 -3
package/dist/stream.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { ROW_WEIGHT, } from '@agentshouse/mdruntime';
|
|
1
2
|
import { acceptedMessage } from './actions.js';
|
|
2
|
-
import {
|
|
3
|
+
import { sha256Hex } from './digest.js';
|
|
4
|
+
import { answered, answering, binaryFileOf, forgotten, headChange, revised } from './read.js';
|
|
3
5
|
import { roomVersion } from './version.js';
|
|
4
6
|
const HELD_FRAMES_MAX = 256;
|
|
5
7
|
function turnOperation(frame) {
|
|
@@ -14,6 +16,7 @@ function listedConversation(listed) {
|
|
|
14
16
|
created: listed.created_at,
|
|
15
17
|
finished: listed.finished_at,
|
|
16
18
|
outcome: listed.outcome,
|
|
19
|
+
waiting: listed.waiting,
|
|
17
20
|
};
|
|
18
21
|
}
|
|
19
22
|
function position(value) {
|
|
@@ -21,9 +24,78 @@ function position(value) {
|
|
|
21
24
|
return null;
|
|
22
25
|
return BigInt(value);
|
|
23
26
|
}
|
|
27
|
+
function assembled(entries) {
|
|
28
|
+
const whole = [];
|
|
29
|
+
let open = null;
|
|
30
|
+
for (const entry of entries) {
|
|
31
|
+
if (entry.kind === 'piece') {
|
|
32
|
+
if (open === null || open.entry.path !== entry.path || entry.text === undefined)
|
|
33
|
+
return null;
|
|
34
|
+
open.texts.push(entry.text);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
if (open !== null)
|
|
38
|
+
return null;
|
|
39
|
+
if (entry.continued !== true) {
|
|
40
|
+
whole.push(entry);
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (entry.text === undefined)
|
|
44
|
+
return null;
|
|
45
|
+
open = { entry, texts: [entry.text] };
|
|
46
|
+
}
|
|
47
|
+
if (entry.continued === true)
|
|
48
|
+
continue;
|
|
49
|
+
const { continued: _continued, ...head } = open.entry;
|
|
50
|
+
whole.push({ ...head, text: open.texts.join('') });
|
|
51
|
+
open = null;
|
|
52
|
+
}
|
|
53
|
+
return open === null ? whole : null;
|
|
54
|
+
}
|
|
55
|
+
async function verified(entries) {
|
|
56
|
+
try {
|
|
57
|
+
for (const entry of entries) {
|
|
58
|
+
if (entry.text === undefined || entry.sha256 === undefined)
|
|
59
|
+
continue;
|
|
60
|
+
if ((await sha256Hex(entry.text)) !== entry.sha256)
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
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
|
+
}
|
|
24
90
|
export function houseNotifications(transport, mode) {
|
|
25
91
|
const stream = transport.stream;
|
|
26
92
|
const lines = new Map();
|
|
93
|
+
const kept = new Map();
|
|
94
|
+
let receipts = null;
|
|
95
|
+
let loaded = Promise.resolve();
|
|
96
|
+
let acknowledging = null;
|
|
97
|
+
let receiving = Promise.resolve();
|
|
98
|
+
let verifying = 0;
|
|
27
99
|
const locators = new Map();
|
|
28
100
|
const observers = new Set();
|
|
29
101
|
const conversationObservers = new Set();
|
|
@@ -41,7 +113,10 @@ export function houseNotifications(transport, mode) {
|
|
|
41
113
|
event.kind === 'questions' ||
|
|
42
114
|
event.kind === 'process' ||
|
|
43
115
|
event.kind === 'commands' ||
|
|
44
|
-
event.kind === 'options'
|
|
116
|
+
event.kind === 'options' ||
|
|
117
|
+
event.kind === 'starting' ||
|
|
118
|
+
event.kind === 'link' ||
|
|
119
|
+
event.kind === 'deliveries') {
|
|
45
120
|
live.add(event.conversation);
|
|
46
121
|
}
|
|
47
122
|
for (const observer of conversationObservers)
|
|
@@ -49,6 +124,7 @@ export function houseNotifications(transport, mode) {
|
|
|
49
124
|
}
|
|
50
125
|
function reopened(next) {
|
|
51
126
|
opening = next;
|
|
127
|
+
acknowledging = next;
|
|
52
128
|
const gapped = new Set([...replicated, ...live]);
|
|
53
129
|
live.clear();
|
|
54
130
|
for (const conversation of gapped)
|
|
@@ -86,6 +162,18 @@ export function houseNotifications(transport, mode) {
|
|
|
86
162
|
emitConversation({ kind: 'options', conversation, options: structuredClone(frame.options) });
|
|
87
163
|
return;
|
|
88
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
|
+
}
|
|
89
177
|
if (frame.type === 'interactions') {
|
|
90
178
|
emitConversation({
|
|
91
179
|
kind: 'questions',
|
|
@@ -110,7 +198,162 @@ export function houseNotifications(transport, mode) {
|
|
|
110
198
|
if (line !== undefined)
|
|
111
199
|
lines.set(authority, { ...line, frames: [] });
|
|
112
200
|
}
|
|
113
|
-
function
|
|
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)
|
|
214
|
+
return;
|
|
215
|
+
const held = kept.get(frame.carry);
|
|
216
|
+
if (held === undefined && frame.index !== 0) {
|
|
217
|
+
interrupt(frame.authority);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
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);
|
|
250
|
+
}
|
|
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);
|
|
270
|
+
if (entries === null) {
|
|
271
|
+
await lost(frame.authority, frame.carry);
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
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);
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
kept.set(frame.carry, fenced);
|
|
294
|
+
publish(frame, entries);
|
|
295
|
+
}
|
|
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) {
|
|
114
357
|
if (frame.type === 'signal') {
|
|
115
358
|
const mode = frame.service_mode;
|
|
116
359
|
if (mode !== 'open' && mode !== 'write-halted')
|
|
@@ -126,6 +369,10 @@ export function houseNotifications(transport, mode) {
|
|
|
126
369
|
});
|
|
127
370
|
return;
|
|
128
371
|
}
|
|
372
|
+
if (frame.type === 'authority_changed') {
|
|
373
|
+
emit({ kind: 'authority-changed', scope: { authorities: frame.rooms } });
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
129
376
|
if (frame.type === 'conversations') {
|
|
130
377
|
emitConversation({ kind: 'list', entries: frame.conversations.map(listedConversation) });
|
|
131
378
|
return;
|
|
@@ -142,13 +389,20 @@ export function houseNotifications(transport, mode) {
|
|
|
142
389
|
frame.type === 'process' ||
|
|
143
390
|
frame.type === 'commands' ||
|
|
144
391
|
frame.type === 'options' ||
|
|
392
|
+
frame.type === 'starting' ||
|
|
393
|
+
frame.type === 'link' ||
|
|
394
|
+
frame.type === 'deliveries' ||
|
|
145
395
|
frame.type === 'interactions' ||
|
|
146
396
|
frame.type === 'message') {
|
|
147
397
|
converse(frame);
|
|
148
398
|
return;
|
|
149
399
|
}
|
|
150
|
-
if (frame.type
|
|
151
|
-
return;
|
|
400
|
+
if (frame.type === 'part')
|
|
401
|
+
return stage(frame, via);
|
|
402
|
+
if (frame.type === 'carried')
|
|
403
|
+
return carried(frame);
|
|
404
|
+
}
|
|
405
|
+
function publish(frame, entries) {
|
|
152
406
|
const at = position(frame.position);
|
|
153
407
|
const after = position(frame.after);
|
|
154
408
|
if (at === null || after === null || after >= at) {
|
|
@@ -162,7 +416,7 @@ export function houseNotifications(transport, mode) {
|
|
|
162
416
|
const last = line.frames.at(-1);
|
|
163
417
|
if (last !== undefined && at <= last.position)
|
|
164
418
|
return;
|
|
165
|
-
const held = { after, position: at, entries
|
|
419
|
+
const held = { after, position: at, entries };
|
|
166
420
|
const next = last !== undefined && after <= last.position ? [...line.frames, held] : [held];
|
|
167
421
|
lines.set(frame.authority, { ...line, frames: next.length > HELD_FRAMES_MAX ? [] : next });
|
|
168
422
|
}
|
|
@@ -171,11 +425,30 @@ export function houseNotifications(transport, mode) {
|
|
|
171
425
|
}
|
|
172
426
|
announce(frame.authority, { position: frame.position, logEpoch: frame.log_epoch });
|
|
173
427
|
}
|
|
174
|
-
stream.observe(
|
|
428
|
+
stream.observe((frame) => {
|
|
429
|
+
const via = acknowledging;
|
|
430
|
+
if (verifying === 0) {
|
|
431
|
+
const handled = handle(frame, via);
|
|
432
|
+
if (handled === undefined)
|
|
433
|
+
return;
|
|
434
|
+
verifying += 1;
|
|
435
|
+
receiving = handled.finally(() => {
|
|
436
|
+
verifying -= 1;
|
|
437
|
+
});
|
|
438
|
+
return;
|
|
439
|
+
}
|
|
440
|
+
verifying += 1;
|
|
441
|
+
receiving = receiving
|
|
442
|
+
.then(() => handle(frame, via))
|
|
443
|
+
.finally(() => {
|
|
444
|
+
verifying -= 1;
|
|
445
|
+
});
|
|
446
|
+
});
|
|
175
447
|
stream.opened(reopened);
|
|
176
|
-
stream.closed((revoked) => {
|
|
448
|
+
stream.closed(({ revoked, lost }) => {
|
|
177
449
|
opening = null;
|
|
178
|
-
|
|
450
|
+
acknowledging = null;
|
|
451
|
+
emit({ kind: 'closed', revoked, lost });
|
|
179
452
|
});
|
|
180
453
|
return {
|
|
181
454
|
runtime,
|
|
@@ -198,8 +471,12 @@ export function houseNotifications(transport, mode) {
|
|
|
198
471
|
};
|
|
199
472
|
},
|
|
200
473
|
},
|
|
201
|
-
observe(notify) {
|
|
474
|
+
observe(notify, port) {
|
|
202
475
|
observers.add(notify);
|
|
476
|
+
if (receipts === null) {
|
|
477
|
+
receipts = port;
|
|
478
|
+
loaded = load(port);
|
|
479
|
+
}
|
|
203
480
|
if (opening !== null) {
|
|
204
481
|
queueMicrotask(() => {
|
|
205
482
|
if (observers.has(notify))
|
|
@@ -220,7 +497,30 @@ export function houseNotifications(transport, mode) {
|
|
|
220
497
|
}
|
|
221
498
|
const current = opening;
|
|
222
499
|
opening = null;
|
|
223
|
-
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));
|
|
224
524
|
},
|
|
225
525
|
reopen() {
|
|
226
526
|
const current = opening;
|
|
@@ -239,6 +539,9 @@ export function houseNotifications(transport, mode) {
|
|
|
239
539
|
if (!locators.has(authority))
|
|
240
540
|
lines.delete(authority);
|
|
241
541
|
}
|
|
542
|
+
void loaded.then(() => forget([...kept.values()]
|
|
543
|
+
.filter((carry) => !locators.has(carry.authority))
|
|
544
|
+
.map((carry) => carry.carry)));
|
|
242
545
|
},
|
|
243
546
|
reach(authority, at) {
|
|
244
547
|
const line = lines.get(authority);
|
|
@@ -253,7 +556,7 @@ export function houseNotifications(transport, mode) {
|
|
|
253
556
|
held,
|
|
254
557
|
});
|
|
255
558
|
},
|
|
256
|
-
advance(tracked, from, holds) {
|
|
559
|
+
*advance(tracked, from, holds) {
|
|
257
560
|
const line = lines.get(tracked.authority);
|
|
258
561
|
const start = position(from.position);
|
|
259
562
|
if (line === undefined || start === null || line.logEpoch !== from.logEpoch)
|
|
@@ -262,36 +565,22 @@ export function houseNotifications(transport, mode) {
|
|
|
262
565
|
const first = pending[0];
|
|
263
566
|
if (first === undefined || first.after > start)
|
|
264
567
|
return null;
|
|
265
|
-
const
|
|
266
|
-
const revisions = {};
|
|
267
|
-
const changes = {};
|
|
268
|
-
const binaryFiles = {};
|
|
269
|
-
const removals = [];
|
|
270
|
-
const applied = [];
|
|
568
|
+
const answer = answering();
|
|
271
569
|
const schemas = new Map();
|
|
272
|
-
const forget = (path) => {
|
|
273
|
-
delete documents[path];
|
|
274
|
-
delete revisions[path];
|
|
275
|
-
delete changes[path];
|
|
276
|
-
delete binaryFiles[path];
|
|
277
|
-
const removed = removals.indexOf(path);
|
|
278
|
-
if (removed !== -1)
|
|
279
|
-
removals.splice(removed, 1);
|
|
280
|
-
};
|
|
281
570
|
for (const frame of pending) {
|
|
282
571
|
for (const entry of frame.entries) {
|
|
572
|
+
yield ROW_WEIGHT + (entry.text?.length ?? 0);
|
|
283
573
|
if (entry.kind === 'edited' &&
|
|
284
574
|
entry.revision !== undefined &&
|
|
285
575
|
holds?.(entry.path, entry.revision) === true) {
|
|
286
|
-
|
|
576
|
+
forgotten(answer, entry.path);
|
|
287
577
|
continue;
|
|
288
578
|
}
|
|
289
|
-
applied.push(entry);
|
|
290
579
|
if (tracked.schemas.includes(entry.path))
|
|
291
580
|
schemas.set(entry.path, entry);
|
|
292
581
|
if (entry.kind === 'removed') {
|
|
293
|
-
|
|
294
|
-
removals.
|
|
582
|
+
forgotten(answer, entry.path);
|
|
583
|
+
answer.removals.add(entry.path);
|
|
295
584
|
continue;
|
|
296
585
|
}
|
|
297
586
|
const binary = binaryFileOf(entry);
|
|
@@ -302,31 +591,33 @@ export function houseNotifications(transport, mode) {
|
|
|
302
591
|
const head = headChange(entry);
|
|
303
592
|
if (head === null)
|
|
304
593
|
return null;
|
|
305
|
-
|
|
594
|
+
forgotten(answer, entry.path);
|
|
306
595
|
if (binary === undefined)
|
|
307
|
-
documents
|
|
596
|
+
answer.documents.set(entry.path, entry.text);
|
|
308
597
|
else
|
|
309
|
-
binaryFiles
|
|
598
|
+
answer.binaryFiles.set(entry.path, binary);
|
|
310
599
|
const revision = entry.revision ?? binary?.sha256;
|
|
311
600
|
if (revision !== undefined)
|
|
312
|
-
|
|
601
|
+
revised(answer, entry.path, revision);
|
|
313
602
|
if (head !== undefined)
|
|
314
|
-
changes
|
|
603
|
+
answer.changes.set(entry.path, head);
|
|
315
604
|
}
|
|
316
605
|
}
|
|
317
606
|
const last = pending.at(-1);
|
|
318
|
-
lines.
|
|
607
|
+
const current = lines.get(tracked.authority);
|
|
608
|
+
if (current?.logEpoch === line.logEpoch) {
|
|
609
|
+
lines.set(tracked.authority, {
|
|
610
|
+
...current,
|
|
611
|
+
frames: current.frames.filter((frame) => frame.position > start),
|
|
612
|
+
held: current.held !== null && current.held > last.position ? current.held : last.position,
|
|
613
|
+
});
|
|
614
|
+
}
|
|
319
615
|
return {
|
|
320
616
|
page: {
|
|
321
617
|
kind: 'net-advancement',
|
|
322
618
|
roomVersion: roomVersion({ position: last.position.toString(), logEpoch: line.logEpoch }),
|
|
323
|
-
|
|
324
|
-
revisions,
|
|
325
|
-
changes,
|
|
326
|
-
binaryFiles,
|
|
327
|
-
removals: removals.sort(),
|
|
619
|
+
...(yield* answered(answer)),
|
|
328
620
|
},
|
|
329
|
-
entries: applied,
|
|
330
621
|
schemas,
|
|
331
622
|
};
|
|
332
623
|
},
|
package/dist/transport.d.ts
CHANGED
|
@@ -31,7 +31,7 @@ export type HouseByteTransfer = {
|
|
|
31
31
|
};
|
|
32
32
|
export type HouseStreamEntry = {
|
|
33
33
|
path: string;
|
|
34
|
-
kind: 'edited' | 'removed';
|
|
34
|
+
kind: 'edited' | 'removed' | 'piece';
|
|
35
35
|
revision?: string;
|
|
36
36
|
sha256?: string;
|
|
37
37
|
text?: string;
|
|
@@ -46,6 +46,7 @@ export type HouseStreamEntry = {
|
|
|
46
46
|
name: string;
|
|
47
47
|
};
|
|
48
48
|
created_at?: string;
|
|
49
|
+
continued?: true;
|
|
49
50
|
};
|
|
50
51
|
type LiveFact<K extends ConversationEvent['kind']> = Extract<ConversationEvent, {
|
|
51
52
|
kind: K;
|
|
@@ -57,17 +58,32 @@ export type HouseListedConversation = {
|
|
|
57
58
|
created_at: string;
|
|
58
59
|
finished_at: string | null;
|
|
59
60
|
outcome: string | null;
|
|
61
|
+
waiting: boolean;
|
|
60
62
|
};
|
|
61
63
|
export type HouseStreamFrame = {
|
|
62
|
-
type: '
|
|
64
|
+
type: 'part';
|
|
63
65
|
authority: string;
|
|
66
|
+
carry: string;
|
|
67
|
+
index: number;
|
|
68
|
+
after: string;
|
|
69
|
+
from: string;
|
|
70
|
+
target: string;
|
|
71
|
+
handled: number;
|
|
72
|
+
entries: readonly HouseStreamEntry[];
|
|
73
|
+
} | {
|
|
74
|
+
type: 'carried';
|
|
75
|
+
authority: string;
|
|
76
|
+
carry: string;
|
|
77
|
+
parts: number;
|
|
64
78
|
after: string;
|
|
65
79
|
position: string;
|
|
66
80
|
log_epoch: string;
|
|
67
|
-
entries: readonly HouseStreamEntry[];
|
|
68
81
|
} | {
|
|
69
82
|
type: 'opening';
|
|
70
83
|
expired: readonly string[];
|
|
84
|
+
} | {
|
|
85
|
+
type: 'authority_changed';
|
|
86
|
+
rooms: readonly string[];
|
|
71
87
|
} | ({
|
|
72
88
|
type: 'turn';
|
|
73
89
|
conversation_id: string;
|
|
@@ -80,6 +96,10 @@ export type HouseStreamFrame = {
|
|
|
80
96
|
type: 'interactions';
|
|
81
97
|
conversation_id: string;
|
|
82
98
|
interactions: readonly unknown[];
|
|
99
|
+
} | {
|
|
100
|
+
type: 'deliveries';
|
|
101
|
+
conversation_id: string;
|
|
102
|
+
unknown: readonly string[];
|
|
83
103
|
} | {
|
|
84
104
|
type: 'process';
|
|
85
105
|
conversation_id: string;
|
|
@@ -92,6 +112,14 @@ export type HouseStreamFrame = {
|
|
|
92
112
|
type: 'options';
|
|
93
113
|
conversation_id: string;
|
|
94
114
|
options: LiveFact<'options'>['options'];
|
|
115
|
+
} | {
|
|
116
|
+
type: 'starting';
|
|
117
|
+
conversation_id: string;
|
|
118
|
+
step: string | null;
|
|
119
|
+
} | {
|
|
120
|
+
type: 'link';
|
|
121
|
+
conversation_id: string;
|
|
122
|
+
connected: boolean;
|
|
95
123
|
} | {
|
|
96
124
|
type: 'conversations';
|
|
97
125
|
conversations: readonly HouseListedConversation[];
|
|
@@ -105,19 +133,36 @@ export type HouseStreamFrame = {
|
|
|
105
133
|
type: 'signal';
|
|
106
134
|
service_mode: string;
|
|
107
135
|
};
|
|
136
|
+
export type HouseHeldCarry = {
|
|
137
|
+
id: string;
|
|
138
|
+
parts: number;
|
|
139
|
+
from: string;
|
|
140
|
+
target: string;
|
|
141
|
+
handled: number;
|
|
142
|
+
piece?: {
|
|
143
|
+
sha256: string;
|
|
144
|
+
offset: number;
|
|
145
|
+
};
|
|
146
|
+
};
|
|
108
147
|
export type HouseHeldRoom = {
|
|
109
148
|
authority: string;
|
|
110
149
|
position: string;
|
|
111
150
|
log_epoch: string;
|
|
151
|
+
carry?: HouseHeldCarry;
|
|
112
152
|
};
|
|
113
153
|
export type HouseOpening = {
|
|
114
154
|
hold(rooms: readonly HouseHeldRoom[], runtime: string): void;
|
|
155
|
+
received(authority: string, carry: string, index: number): void;
|
|
115
156
|
close(): void;
|
|
116
157
|
};
|
|
158
|
+
export type HouseClosing = {
|
|
159
|
+
revoked: boolean;
|
|
160
|
+
lost: boolean;
|
|
161
|
+
};
|
|
117
162
|
export type HouseStream = {
|
|
118
163
|
observe(receive: (frame: HouseStreamFrame) => void): () => void;
|
|
119
164
|
opened(notify: (opening: HouseOpening) => void): () => void;
|
|
120
|
-
closed(notify: (
|
|
165
|
+
closed(notify: (closing: HouseClosing) => void): () => void;
|
|
121
166
|
};
|
|
122
167
|
export type HouseDoor = {
|
|
123
168
|
door(route: string, body: unknown): Promise<HouseDoorAnswer>;
|
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,GAAG,0BAA0B,GAAG,cAAc,CAAC;AAEjG,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC;AAErE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,YAAY,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export declare function roomVersion(at: LogPosition): string;
|
|
|
11
11
|
export declare function logPosition(version: string): LogPosition | null;
|
|
12
12
|
export declare function readPosition(held: Readonly<Record<string, unknown>>): LogPosition | null;
|
|
13
13
|
export declare function presented(authority: string, at: LogPosition): PresentedPosition;
|
|
14
|
+
export declare const DECIMAL: RegExp;
|
|
14
15
|
export declare function reachedVersion(roomVersion: string, target: string, currentEpoch: string | undefined): boolean;
|
|
15
16
|
export declare function followsVersion(roomVersion: string, next: string): boolean;
|
|
16
17
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,MAAM,CAEnD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAI/D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,WAAW,GAAG,IAAI,CAKxF;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,GAAG,iBAAiB,CAE/E;
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,MAAM,CAEnD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAI/D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,WAAW,GAAG,IAAI,CAKxF;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,GAAG,iBAAiB,CAE/E;AAED,eAAO,MAAM,OAAO,QAAwB,CAAC;AAE7C,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,OAAO,CAQT;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAMzE"}
|
package/dist/version.js
CHANGED
|
@@ -18,7 +18,7 @@ export function readPosition(held) {
|
|
|
18
18
|
export function presented(authority, at) {
|
|
19
19
|
return { authority, position: at.position, log_epoch: at.logEpoch };
|
|
20
20
|
}
|
|
21
|
-
const DECIMAL = /^(?:0|[1-9][0-9]*)$/;
|
|
21
|
+
export const DECIMAL = /^(?:0|[1-9][0-9]*)$/;
|
|
22
22
|
export function reachedVersion(roomVersion, target, currentEpoch) {
|
|
23
23
|
if (roomVersion === target)
|
|
24
24
|
return true;
|