@agentshouse/mdruntime-adapter 0.1.0-cea44707d3919 → 0.1.0-cedab65f24a09
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 +275 -229
- package/dist/actions.d.ts +62 -1
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +155 -133
- package/dist/adapter.d.ts +1 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +314 -93
- package/dist/discovery.d.ts +2 -1
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +10 -6
- package/dist/gather.d.ts +1 -0
- package/dist/gather.d.ts.map +1 -1
- package/dist/gather.js +11 -6
- package/dist/handed.d.ts +15 -0
- package/dist/handed.d.ts.map +1 -0
- package/dist/handed.js +38 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/model.d.ts +1 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +6 -2
- package/dist/read.d.ts +34 -7
- package/dist/read.d.ts.map +1 -1
- package/dist/read.js +156 -77
- package/dist/referrer.d.ts +7 -0
- package/dist/referrer.d.ts.map +1 -0
- package/dist/referrer.js +35 -0
- package/dist/refusal.d.ts +2 -5
- package/dist/refusal.d.ts.map +1 -1
- package/dist/refusal.js +6 -9
- package/dist/site.d.ts +1 -1
- package/dist/site.d.ts.map +1 -1
- package/dist/site.js +182 -49
- package/dist/stream.d.ts +3 -2
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +306 -15
- package/dist/transport.d.ts +51 -10
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +3 -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 +3 -9
- package/dist/write.d.ts.map +1 -1
- package/dist/write.js +92 -14
- package/package.json +3 -4
- package/dist/links.d.ts +0 -20
- package/dist/links.d.ts.map +0 -1
- package/dist/links.js +0 -104
package/dist/stream.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { acceptedMessage } from './actions.js';
|
|
2
|
-
import {
|
|
2
|
+
import { sha256Hex } from './digest.js';
|
|
3
|
+
import { binaryFileOf, headChange, identities } from './read.js';
|
|
3
4
|
import { roomVersion } from './version.js';
|
|
4
5
|
const HELD_FRAMES_MAX = 256;
|
|
5
6
|
function turnOperation(frame) {
|
|
@@ -21,9 +22,78 @@ function position(value) {
|
|
|
21
22
|
return null;
|
|
22
23
|
return BigInt(value);
|
|
23
24
|
}
|
|
25
|
+
function assembled(entries) {
|
|
26
|
+
const whole = [];
|
|
27
|
+
let open = null;
|
|
28
|
+
for (const entry of entries) {
|
|
29
|
+
if (entry.kind === 'piece') {
|
|
30
|
+
if (open === null || open.entry.path !== entry.path || entry.text === undefined)
|
|
31
|
+
return null;
|
|
32
|
+
open.texts.push(entry.text);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
if (open !== null)
|
|
36
|
+
return null;
|
|
37
|
+
if (entry.continued !== true) {
|
|
38
|
+
whole.push(entry);
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
if (entry.text === undefined)
|
|
42
|
+
return null;
|
|
43
|
+
open = { entry, texts: [entry.text] };
|
|
44
|
+
}
|
|
45
|
+
if (entry.continued === true)
|
|
46
|
+
continue;
|
|
47
|
+
const { continued: _continued, ...head } = open.entry;
|
|
48
|
+
whole.push({ ...head, text: open.texts.join('') });
|
|
49
|
+
open = null;
|
|
50
|
+
}
|
|
51
|
+
return open === null ? whole : null;
|
|
52
|
+
}
|
|
53
|
+
async function verified(entries) {
|
|
54
|
+
try {
|
|
55
|
+
for (const entry of entries) {
|
|
56
|
+
if (entry.text === undefined || entry.sha256 === undefined)
|
|
57
|
+
continue;
|
|
58
|
+
if ((await sha256Hex(entry.text)) !== entry.sha256)
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function resumed(kept, frame) {
|
|
68
|
+
const last = frame.entries.at(-1);
|
|
69
|
+
const point = { parts: frame.index + 1, from: frame.from, target: frame.target };
|
|
70
|
+
if (last?.continued !== true)
|
|
71
|
+
return { ...point, handled: frame.handled, piece: null };
|
|
72
|
+
const text = last.text?.length ?? 0;
|
|
73
|
+
if (last.kind !== 'piece') {
|
|
74
|
+
return last.sha256 === undefined
|
|
75
|
+
? kept.resume
|
|
76
|
+
: { ...point, handled: frame.handled, piece: { sha256: last.sha256, offset: text } };
|
|
77
|
+
}
|
|
78
|
+
const piece = kept.resume?.piece ?? null;
|
|
79
|
+
if (piece === null)
|
|
80
|
+
return kept.resume;
|
|
81
|
+
const pieces = frame.entries.reduce((sum, entry) => sum + (entry.kind === 'piece' ? (entry.text?.length ?? 0) : 0), 0);
|
|
82
|
+
return {
|
|
83
|
+
...point,
|
|
84
|
+
handled: frame.handled,
|
|
85
|
+
piece: { sha256: piece.sha256, offset: piece.offset + pieces },
|
|
86
|
+
};
|
|
87
|
+
}
|
|
24
88
|
export function houseNotifications(transport, mode) {
|
|
25
89
|
const stream = transport.stream;
|
|
26
90
|
const lines = new Map();
|
|
91
|
+
const kept = new Map();
|
|
92
|
+
let receipts = null;
|
|
93
|
+
let loaded = Promise.resolve();
|
|
94
|
+
let acknowledging = null;
|
|
95
|
+
let receiving = Promise.resolve();
|
|
96
|
+
let verifying = 0;
|
|
27
97
|
const locators = new Map();
|
|
28
98
|
const observers = new Set();
|
|
29
99
|
const conversationObservers = new Set();
|
|
@@ -49,6 +119,7 @@ export function houseNotifications(transport, mode) {
|
|
|
49
119
|
}
|
|
50
120
|
function reopened(next) {
|
|
51
121
|
opening = next;
|
|
122
|
+
acknowledging = next;
|
|
52
123
|
const gapped = new Set([...replicated, ...live]);
|
|
53
124
|
live.clear();
|
|
54
125
|
for (const conversation of gapped)
|
|
@@ -110,7 +181,162 @@ export function houseNotifications(transport, mode) {
|
|
|
110
181
|
if (line !== undefined)
|
|
111
182
|
lines.set(authority, { ...line, frames: [] });
|
|
112
183
|
}
|
|
113
|
-
function
|
|
184
|
+
async function forget(carries) {
|
|
185
|
+
const held = carries.filter((carry) => kept.delete(carry));
|
|
186
|
+
if (held.length > 0)
|
|
187
|
+
await receipts?.drop(held).catch(() => { });
|
|
188
|
+
}
|
|
189
|
+
async function lost(authority, carry) {
|
|
190
|
+
interrupt(authority);
|
|
191
|
+
await forget([carry]);
|
|
192
|
+
}
|
|
193
|
+
async function stage(frame, via) {
|
|
194
|
+
await loaded;
|
|
195
|
+
const port = receipts;
|
|
196
|
+
if (port === null)
|
|
197
|
+
return;
|
|
198
|
+
const held = kept.get(frame.carry);
|
|
199
|
+
if (held === undefined && frame.index !== 0) {
|
|
200
|
+
interrupt(frame.authority);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
if (held !== undefined &&
|
|
204
|
+
(held.fenced !== null || frame.index > held.parts || frame.index < (held.resume?.parts ?? 0))) {
|
|
205
|
+
await lost(frame.authority, frame.carry);
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
if (held === undefined) {
|
|
209
|
+
await forget([...kept.values()]
|
|
210
|
+
.filter((other) => other.authority === frame.authority && other.fenced === null)
|
|
211
|
+
.map((other) => other.carry));
|
|
212
|
+
}
|
|
213
|
+
const start = held ?? {
|
|
214
|
+
authority: frame.authority,
|
|
215
|
+
carry: frame.carry,
|
|
216
|
+
logEpoch: lines.get(frame.authority)?.logEpoch ?? null,
|
|
217
|
+
after: frame.after,
|
|
218
|
+
parts: 0,
|
|
219
|
+
resume: null,
|
|
220
|
+
fenced: null,
|
|
221
|
+
};
|
|
222
|
+
const next = { ...start, parts: frame.index + 1, resume: resumed(start, frame) };
|
|
223
|
+
const part = { entries: frame.entries };
|
|
224
|
+
try {
|
|
225
|
+
await port.keep(frame.carry, next, { index: frame.index, value: part });
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
await lost(frame.authority, frame.carry);
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
kept.set(frame.carry, next);
|
|
232
|
+
via?.received(frame.authority, frame.carry, frame.index);
|
|
233
|
+
}
|
|
234
|
+
async function keptEntries(carry, parts) {
|
|
235
|
+
if (parts === 0)
|
|
236
|
+
return [];
|
|
237
|
+
if (receipts === null)
|
|
238
|
+
return null;
|
|
239
|
+
const read = (await receipts.parts(carry, parts));
|
|
240
|
+
if (read.length !== parts)
|
|
241
|
+
return null;
|
|
242
|
+
const entries = assembled(read.flatMap((part) => part.entries));
|
|
243
|
+
return entries !== null && (await verified(entries)) ? entries : null;
|
|
244
|
+
}
|
|
245
|
+
async function carried(frame) {
|
|
246
|
+
await loaded;
|
|
247
|
+
const held = kept.get(frame.carry);
|
|
248
|
+
if (frame.parts > 0 && held?.parts !== frame.parts) {
|
|
249
|
+
await lost(frame.authority, frame.carry);
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
const entries = await keptEntries(frame.carry, frame.parts).catch(() => null);
|
|
253
|
+
if (entries === null) {
|
|
254
|
+
await lost(frame.authority, frame.carry);
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
const fenced = {
|
|
258
|
+
...(held ?? {
|
|
259
|
+
authority: frame.authority,
|
|
260
|
+
carry: frame.carry,
|
|
261
|
+
logEpoch: frame.log_epoch,
|
|
262
|
+
after: frame.after,
|
|
263
|
+
parts: 0,
|
|
264
|
+
resume: null,
|
|
265
|
+
}),
|
|
266
|
+
after: frame.after,
|
|
267
|
+
fenced: { position: frame.position, logEpoch: frame.log_epoch },
|
|
268
|
+
};
|
|
269
|
+
try {
|
|
270
|
+
await receipts?.keep(frame.carry, fenced);
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
await lost(frame.authority, frame.carry);
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
kept.set(frame.carry, fenced);
|
|
277
|
+
publish(frame, entries);
|
|
278
|
+
}
|
|
279
|
+
async function load(port) {
|
|
280
|
+
try {
|
|
281
|
+
for (const { key, head } of await port.heads())
|
|
282
|
+
kept.set(key, head);
|
|
283
|
+
}
|
|
284
|
+
catch {
|
|
285
|
+
kept.clear();
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
async function restored(room) {
|
|
289
|
+
const line = lines.get(room.authority);
|
|
290
|
+
let at = room.position;
|
|
291
|
+
const chain = [];
|
|
292
|
+
for (;;) {
|
|
293
|
+
const next = [...kept.values()].find((carry) => carry.authority === room.authority &&
|
|
294
|
+
carry.after === at &&
|
|
295
|
+
carry.fenced?.logEpoch === room.log_epoch);
|
|
296
|
+
if (next?.fenced == null)
|
|
297
|
+
break;
|
|
298
|
+
const entries = await keptEntries(next.carry, next.parts).catch(() => null);
|
|
299
|
+
if (entries === null)
|
|
300
|
+
break;
|
|
301
|
+
chain.push({ carry: next, entries });
|
|
302
|
+
at = next.fenced.position;
|
|
303
|
+
}
|
|
304
|
+
const partial = [...kept.values()].find((carry) => carry.authority === room.authority &&
|
|
305
|
+
carry.fenced === null &&
|
|
306
|
+
carry.logEpoch === room.log_epoch &&
|
|
307
|
+
carry.after === at &&
|
|
308
|
+
carry.resume !== null &&
|
|
309
|
+
carry.resume.parts > 0);
|
|
310
|
+
const stale = [...kept.values()].filter((carry) => carry.authority === room.authority &&
|
|
311
|
+
carry !== partial &&
|
|
312
|
+
!chain.some((link) => link.carry === carry));
|
|
313
|
+
await forget(stale.map((carry) => carry.carry));
|
|
314
|
+
if (line !== undefined && line.logEpoch === room.log_epoch && chain.length > 0) {
|
|
315
|
+
const frames = chain.map(({ carry, entries }) => ({
|
|
316
|
+
after: BigInt(carry.after),
|
|
317
|
+
position: BigInt(carry.fenced.position),
|
|
318
|
+
entries,
|
|
319
|
+
}));
|
|
320
|
+
lines.set(room.authority, { ...line, frames: [...line.frames, ...frames] });
|
|
321
|
+
}
|
|
322
|
+
return {
|
|
323
|
+
...room,
|
|
324
|
+
position: at,
|
|
325
|
+
...(partial?.resume == null
|
|
326
|
+
? {}
|
|
327
|
+
: {
|
|
328
|
+
carry: {
|
|
329
|
+
id: partial.carry,
|
|
330
|
+
parts: partial.resume.parts,
|
|
331
|
+
from: partial.resume.from,
|
|
332
|
+
target: partial.resume.target,
|
|
333
|
+
handled: partial.resume.handled,
|
|
334
|
+
...(partial.resume.piece === null ? {} : { piece: partial.resume.piece }),
|
|
335
|
+
},
|
|
336
|
+
}),
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
function handle(frame, via) {
|
|
114
340
|
if (frame.type === 'signal') {
|
|
115
341
|
const mode = frame.service_mode;
|
|
116
342
|
if (mode !== 'open' && mode !== 'write-halted')
|
|
@@ -126,6 +352,10 @@ export function houseNotifications(transport, mode) {
|
|
|
126
352
|
});
|
|
127
353
|
return;
|
|
128
354
|
}
|
|
355
|
+
if (frame.type === 'authority_changed') {
|
|
356
|
+
emit({ kind: 'authority-changed', scope: { authorities: frame.rooms } });
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
129
359
|
if (frame.type === 'conversations') {
|
|
130
360
|
emitConversation({ kind: 'list', entries: frame.conversations.map(listedConversation) });
|
|
131
361
|
return;
|
|
@@ -147,8 +377,12 @@ export function houseNotifications(transport, mode) {
|
|
|
147
377
|
converse(frame);
|
|
148
378
|
return;
|
|
149
379
|
}
|
|
150
|
-
if (frame.type
|
|
151
|
-
return;
|
|
380
|
+
if (frame.type === 'part')
|
|
381
|
+
return stage(frame, via);
|
|
382
|
+
if (frame.type === 'carried')
|
|
383
|
+
return carried(frame);
|
|
384
|
+
}
|
|
385
|
+
function publish(frame, entries) {
|
|
152
386
|
const at = position(frame.position);
|
|
153
387
|
const after = position(frame.after);
|
|
154
388
|
if (at === null || after === null || after >= at) {
|
|
@@ -162,7 +396,7 @@ export function houseNotifications(transport, mode) {
|
|
|
162
396
|
const last = line.frames.at(-1);
|
|
163
397
|
if (last !== undefined && at <= last.position)
|
|
164
398
|
return;
|
|
165
|
-
const held = { after, position: at, entries
|
|
399
|
+
const held = { after, position: at, entries };
|
|
166
400
|
const next = last !== undefined && after <= last.position ? [...line.frames, held] : [held];
|
|
167
401
|
lines.set(frame.authority, { ...line, frames: next.length > HELD_FRAMES_MAX ? [] : next });
|
|
168
402
|
}
|
|
@@ -171,11 +405,30 @@ export function houseNotifications(transport, mode) {
|
|
|
171
405
|
}
|
|
172
406
|
announce(frame.authority, { position: frame.position, logEpoch: frame.log_epoch });
|
|
173
407
|
}
|
|
174
|
-
stream.observe(
|
|
408
|
+
stream.observe((frame) => {
|
|
409
|
+
const via = acknowledging;
|
|
410
|
+
if (verifying === 0) {
|
|
411
|
+
const handled = handle(frame, via);
|
|
412
|
+
if (handled === undefined)
|
|
413
|
+
return;
|
|
414
|
+
verifying += 1;
|
|
415
|
+
receiving = handled.finally(() => {
|
|
416
|
+
verifying -= 1;
|
|
417
|
+
});
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
verifying += 1;
|
|
421
|
+
receiving = receiving
|
|
422
|
+
.then(() => handle(frame, via))
|
|
423
|
+
.finally(() => {
|
|
424
|
+
verifying -= 1;
|
|
425
|
+
});
|
|
426
|
+
});
|
|
175
427
|
stream.opened(reopened);
|
|
176
|
-
stream.closed((revoked) => {
|
|
428
|
+
stream.closed(({ revoked, lost }) => {
|
|
177
429
|
opening = null;
|
|
178
|
-
|
|
430
|
+
acknowledging = null;
|
|
431
|
+
emit({ kind: 'closed', revoked, lost });
|
|
179
432
|
});
|
|
180
433
|
return {
|
|
181
434
|
runtime,
|
|
@@ -198,8 +451,12 @@ export function houseNotifications(transport, mode) {
|
|
|
198
451
|
};
|
|
199
452
|
},
|
|
200
453
|
},
|
|
201
|
-
observe(notify) {
|
|
454
|
+
observe(notify, port) {
|
|
202
455
|
observers.add(notify);
|
|
456
|
+
if (receipts === null) {
|
|
457
|
+
receipts = port;
|
|
458
|
+
loaded = load(port);
|
|
459
|
+
}
|
|
203
460
|
if (opening !== null) {
|
|
204
461
|
queueMicrotask(() => {
|
|
205
462
|
if (observers.has(notify))
|
|
@@ -220,7 +477,30 @@ export function houseNotifications(transport, mode) {
|
|
|
220
477
|
}
|
|
221
478
|
const current = opening;
|
|
222
479
|
opening = null;
|
|
223
|
-
current
|
|
480
|
+
if (current === null)
|
|
481
|
+
return;
|
|
482
|
+
void loaded
|
|
483
|
+
.then(() => Promise.all(rooms.map(restored)))
|
|
484
|
+
.then((presented) => {
|
|
485
|
+
current.hold(presented, runtime);
|
|
486
|
+
for (const [index, room] of presented.entries()) {
|
|
487
|
+
if (room.position === rooms[index].position)
|
|
488
|
+
continue;
|
|
489
|
+
announce(room.authority, { position: room.position, logEpoch: room.log_epoch });
|
|
490
|
+
}
|
|
491
|
+
});
|
|
492
|
+
},
|
|
493
|
+
published(locator, at) {
|
|
494
|
+
const authority = [...locators].find(([, held]) => held.includes(locator))?.[0];
|
|
495
|
+
const reached = position(at.position);
|
|
496
|
+
if (authority === undefined || reached === null)
|
|
497
|
+
return;
|
|
498
|
+
void forget([...kept.values()]
|
|
499
|
+
.filter((carry) => carry.authority === authority &&
|
|
500
|
+
carry.fenced !== null &&
|
|
501
|
+
carry.fenced.logEpoch === at.logEpoch &&
|
|
502
|
+
BigInt(carry.fenced.position) <= reached)
|
|
503
|
+
.map((carry) => carry.carry));
|
|
224
504
|
},
|
|
225
505
|
reopen() {
|
|
226
506
|
const current = opening;
|
|
@@ -239,6 +519,9 @@ export function houseNotifications(transport, mode) {
|
|
|
239
519
|
if (!locators.has(authority))
|
|
240
520
|
lines.delete(authority);
|
|
241
521
|
}
|
|
522
|
+
void loaded.then(() => forget([...kept.values()]
|
|
523
|
+
.filter((carry) => !locators.has(carry.authority))
|
|
524
|
+
.map((carry) => carry.carry)));
|
|
242
525
|
},
|
|
243
526
|
reach(authority, at) {
|
|
244
527
|
const line = lines.get(authority);
|
|
@@ -265,6 +548,7 @@ export function houseNotifications(transport, mode) {
|
|
|
265
548
|
const documents = {};
|
|
266
549
|
const revisions = {};
|
|
267
550
|
const changes = {};
|
|
551
|
+
const binaryFiles = {};
|
|
268
552
|
const removals = [];
|
|
269
553
|
const applied = [];
|
|
270
554
|
const schemas = new Map();
|
|
@@ -272,6 +556,7 @@ export function houseNotifications(transport, mode) {
|
|
|
272
556
|
delete documents[path];
|
|
273
557
|
delete revisions[path];
|
|
274
558
|
delete changes[path];
|
|
559
|
+
delete binaryFiles[path];
|
|
275
560
|
const removed = removals.indexOf(path);
|
|
276
561
|
if (removed !== -1)
|
|
277
562
|
removals.splice(removed, 1);
|
|
@@ -292,7 +577,8 @@ export function houseNotifications(transport, mode) {
|
|
|
292
577
|
removals.push(entry.path);
|
|
293
578
|
continue;
|
|
294
579
|
}
|
|
295
|
-
|
|
580
|
+
const binary = binaryFileOf(entry);
|
|
581
|
+
if (binary === null || (binary === undefined && entry.text === undefined))
|
|
296
582
|
return null;
|
|
297
583
|
if (mode === 'credential' && entry.revision === undefined)
|
|
298
584
|
return null;
|
|
@@ -300,9 +586,13 @@ export function houseNotifications(transport, mode) {
|
|
|
300
586
|
if (head === null)
|
|
301
587
|
return null;
|
|
302
588
|
forget(entry.path);
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
589
|
+
if (binary === undefined)
|
|
590
|
+
documents[entry.path] = entry.text;
|
|
591
|
+
else
|
|
592
|
+
binaryFiles[entry.path] = binary;
|
|
593
|
+
const revision = entry.revision ?? binary?.sha256;
|
|
594
|
+
if (revision !== undefined)
|
|
595
|
+
revisions[entry.path] = revision;
|
|
306
596
|
if (head !== undefined)
|
|
307
597
|
changes[entry.path] = head;
|
|
308
598
|
}
|
|
@@ -315,8 +605,9 @@ export function houseNotifications(transport, mode) {
|
|
|
315
605
|
roomVersion: roomVersion({ position: last.position.toString(), logEpoch: line.logEpoch }),
|
|
316
606
|
documents,
|
|
317
607
|
revisions,
|
|
608
|
+
...identities(revisions),
|
|
318
609
|
changes,
|
|
319
|
-
|
|
610
|
+
binaryFiles,
|
|
320
611
|
removals: removals.sort(),
|
|
321
612
|
},
|
|
322
613
|
entries: applied,
|
package/dist/transport.d.ts
CHANGED
|
@@ -14,23 +14,30 @@ export type HouseDoorAnswer = {
|
|
|
14
14
|
status: number;
|
|
15
15
|
body: unknown;
|
|
16
16
|
};
|
|
17
|
-
export
|
|
18
|
-
export
|
|
19
|
-
export
|
|
17
|
+
export declare const DOOR_FILES_GET = "/door/files/get";
|
|
18
|
+
export declare const SITE_FILES = "/_house/files/";
|
|
19
|
+
export declare const SITE_FILE_RECORD = "record";
|
|
20
|
+
export type HouseByteAct = 'authored_batch_upload' | 'conversation_file_upload' | 'binary_stage';
|
|
21
|
+
export type HouseByteBody = string | ArrayBuffer | Uint8Array | Blob;
|
|
22
|
+
export type HouseBytesAnswer = {
|
|
23
|
+
status: number;
|
|
24
|
+
blob: Blob | null;
|
|
25
|
+
};
|
|
20
26
|
export type HouseByteTransfer = {
|
|
21
27
|
act: HouseByteAct;
|
|
22
|
-
method: 'GET' | 'POST';
|
|
23
28
|
url: string;
|
|
24
|
-
|
|
25
|
-
body?: HouseByteBody;
|
|
29
|
+
body: HouseByteBody;
|
|
26
30
|
operation?: string;
|
|
27
31
|
};
|
|
28
32
|
export type HouseStreamEntry = {
|
|
29
33
|
path: string;
|
|
30
|
-
kind: 'edited' | 'removed';
|
|
34
|
+
kind: 'edited' | 'removed' | 'piece';
|
|
31
35
|
revision?: string;
|
|
32
36
|
sha256?: string;
|
|
33
37
|
text?: string;
|
|
38
|
+
file?: string;
|
|
39
|
+
bytes?: number;
|
|
40
|
+
media_type?: string;
|
|
34
41
|
author?: {
|
|
35
42
|
user: string;
|
|
36
43
|
name: string;
|
|
@@ -39,6 +46,7 @@ export type HouseStreamEntry = {
|
|
|
39
46
|
name: string;
|
|
40
47
|
};
|
|
41
48
|
created_at?: string;
|
|
49
|
+
continued?: true;
|
|
42
50
|
};
|
|
43
51
|
type LiveFact<K extends ConversationEvent['kind']> = Extract<ConversationEvent, {
|
|
44
52
|
kind: K;
|
|
@@ -52,15 +60,29 @@ export type HouseListedConversation = {
|
|
|
52
60
|
outcome: string | null;
|
|
53
61
|
};
|
|
54
62
|
export type HouseStreamFrame = {
|
|
55
|
-
type: '
|
|
63
|
+
type: 'part';
|
|
64
|
+
authority: string;
|
|
65
|
+
carry: string;
|
|
66
|
+
index: number;
|
|
67
|
+
after: string;
|
|
68
|
+
from: string;
|
|
69
|
+
target: string;
|
|
70
|
+
handled: number;
|
|
71
|
+
entries: readonly HouseStreamEntry[];
|
|
72
|
+
} | {
|
|
73
|
+
type: 'carried';
|
|
56
74
|
authority: string;
|
|
75
|
+
carry: string;
|
|
76
|
+
parts: number;
|
|
57
77
|
after: string;
|
|
58
78
|
position: string;
|
|
59
79
|
log_epoch: string;
|
|
60
|
-
entries: readonly HouseStreamEntry[];
|
|
61
80
|
} | {
|
|
62
81
|
type: 'opening';
|
|
63
82
|
expired: readonly string[];
|
|
83
|
+
} | {
|
|
84
|
+
type: 'authority_changed';
|
|
85
|
+
rooms: readonly string[];
|
|
64
86
|
} | ({
|
|
65
87
|
type: 'turn';
|
|
66
88
|
conversation_id: string;
|
|
@@ -98,19 +120,36 @@ export type HouseStreamFrame = {
|
|
|
98
120
|
type: 'signal';
|
|
99
121
|
service_mode: string;
|
|
100
122
|
};
|
|
123
|
+
export type HouseHeldCarry = {
|
|
124
|
+
id: string;
|
|
125
|
+
parts: number;
|
|
126
|
+
from: string;
|
|
127
|
+
target: string;
|
|
128
|
+
handled: number;
|
|
129
|
+
piece?: {
|
|
130
|
+
sha256: string;
|
|
131
|
+
offset: number;
|
|
132
|
+
};
|
|
133
|
+
};
|
|
101
134
|
export type HouseHeldRoom = {
|
|
102
135
|
authority: string;
|
|
103
136
|
position: string;
|
|
104
137
|
log_epoch: string;
|
|
138
|
+
carry?: HouseHeldCarry;
|
|
105
139
|
};
|
|
106
140
|
export type HouseOpening = {
|
|
107
141
|
hold(rooms: readonly HouseHeldRoom[], runtime: string): void;
|
|
142
|
+
received(authority: string, carry: string, index: number): void;
|
|
108
143
|
close(): void;
|
|
109
144
|
};
|
|
145
|
+
export type HouseClosing = {
|
|
146
|
+
revoked: boolean;
|
|
147
|
+
lost: boolean;
|
|
148
|
+
};
|
|
110
149
|
export type HouseStream = {
|
|
111
150
|
observe(receive: (frame: HouseStreamFrame) => void): () => void;
|
|
112
151
|
opened(notify: (opening: HouseOpening) => void): () => void;
|
|
113
|
-
closed(notify: (
|
|
152
|
+
closed(notify: (closing: HouseClosing) => void): () => void;
|
|
114
153
|
};
|
|
115
154
|
export type HouseDoor = {
|
|
116
155
|
door(route: string, body: unknown): Promise<HouseDoorAnswer>;
|
|
@@ -118,10 +157,12 @@ export type HouseDoor = {
|
|
|
118
157
|
};
|
|
119
158
|
export type HouseTransport = HouseDoor & {
|
|
120
159
|
transfer(request: HouseByteTransfer): Promise<HouseDoorAnswer>;
|
|
160
|
+
download(url: string): Promise<HouseBytesAnswer>;
|
|
121
161
|
};
|
|
122
162
|
export type HouseSiteTransport = HouseDoor & {
|
|
123
163
|
online(): boolean;
|
|
124
164
|
read(route: string): Promise<HouseDoorAnswer>;
|
|
165
|
+
download(route: string): Promise<HouseBytesAnswer>;
|
|
125
166
|
};
|
|
126
167
|
export {};
|
|
127
168
|
//# sourceMappingURL=transport.d.ts.map
|
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,
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
|
package/dist/transport.js
CHANGED
|
@@ -8,3 +8,6 @@ export const SITE_DOOR_DISCOVER = '/_house/door/discover';
|
|
|
8
8
|
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
|
+
export const DOOR_FILES_GET = '/door/files/get';
|
|
12
|
+
export const SITE_FILES = '/_house/files/';
|
|
13
|
+
export const SITE_FILE_RECORD = 'record';
|
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;
|
package/dist/write.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ChangeBatch, type HistoryResult, type MutationResult } from '@agentshouse/mdruntime';
|
|
2
2
|
import type { HouseBounds } from './discovery.js';
|
|
3
3
|
export type HouseOperation = Readonly<Record<string, unknown>>;
|
|
4
4
|
export type ChangeMapping = {
|
|
@@ -21,14 +21,7 @@ export declare function deltaBody(changes: readonly HouseOperation[]): string;
|
|
|
21
21
|
export declare function deltaBytes(delta: string): number;
|
|
22
22
|
export declare function uploadable(inline: Readonly<Record<string, unknown>>, bytes: number, bounds: Pick<HouseBounds, 'max_inline_body_bytes' | 'max_upload_bytes'>): boolean;
|
|
23
23
|
export declare function deltaDigest(delta: string): Promise<string>;
|
|
24
|
-
export
|
|
25
|
-
kind: 'accepted';
|
|
26
|
-
}> | (Extract<MutationResult, {
|
|
27
|
-
kind: 'accepted';
|
|
28
|
-
}> & {
|
|
29
|
-
originals: readonly RoomAttachment[];
|
|
30
|
-
});
|
|
31
|
-
export declare function mutationOutcome(status: number, body: unknown, locator: string, handle: string): SubmittedOutcome;
|
|
24
|
+
export declare function mutationOutcome(status: number, body: unknown, locator: string, handle: string): MutationResult;
|
|
32
25
|
export declare function rejectedMapping(mapping: Extract<ChangeMapping, {
|
|
33
26
|
kind: 'unmapped';
|
|
34
27
|
}>): {
|
|
@@ -38,6 +31,7 @@ export declare function rejectedMapping(mapping: Extract<ChangeMapping, {
|
|
|
38
31
|
fields: {
|
|
39
32
|
path: string;
|
|
40
33
|
};
|
|
34
|
+
retryable: boolean;
|
|
41
35
|
};
|
|
42
36
|
export declare function revisionBody(input: {
|
|
43
37
|
path: string;
|
package/dist/write.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,WAAW,EAEhB,KAAK,aAAa,EAElB,KAAK,cAAc,EAEpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAOlD,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE/D,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAwHrD,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAQ9E;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa,CAK/D;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,GAAG,SAAS,MAAM,EAAE,CAQhF;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,CAEpE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,uBAAuB,GAAG,kBAAkB,CAAC,GACtE,OAAO,CAKT;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE1D;AAiDD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,cAAc,CAmFhB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;IAEjF,IAAI,EAAE,UAAU;IAChB,QAAQ;IACR,IAAI;IACJ,MAAM;QAAI,IAAI;;IACd,SAAS;EAEZ;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM1B;AA4BD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,aAAa,CAyDf"}
|