@agentshouse/mdruntime-adapter 0.1.0-cd519a0f878dc → 0.1.0-cd5a35054e28c
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/dist/actions.d.ts +8 -13
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +5 -69
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +78 -124
- package/dist/discovery.d.ts +3 -3
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +8 -9
- package/dist/gather.d.ts +0 -1
- package/dist/gather.d.ts.map +1 -1
- package/dist/gather.js +1 -1
- package/dist/house-model.d.ts +1 -1
- package/dist/house-model.d.ts.map +1 -1
- package/dist/house-model.js +148 -99
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/model.d.ts +2 -2
- package/dist/model.d.ts.map +1 -1
- package/dist/part.d.ts +11 -12
- package/dist/part.d.ts.map +1 -1
- package/dist/part.js +63 -55
- package/dist/read.d.ts +10 -15
- package/dist/read.d.ts.map +1 -1
- package/dist/read.js +35 -47
- package/dist/room-stream.d.ts +19 -0
- package/dist/room-stream.d.ts.map +1 -0
- package/dist/room-stream.js +57 -0
- package/dist/room-types.d.ts +1 -1
- package/dist/room-types.d.ts.map +1 -1
- package/dist/room-types.js +2 -0
- package/dist/site.d.ts.map +1 -1
- package/dist/site.js +33 -72
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +7 -3
- package/dist/transport.d.ts +12 -2
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +1 -0
- package/dist/write.d.ts +4 -0
- package/dist/write.d.ts.map +1 -1
- package/dist/write.js +10 -2
- package/package.json +2 -2
package/dist/model.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { RoomModels } from '@agentshouse/mdruntime';
|
|
2
2
|
import type { TrackedAuthority } from './discovery.js';
|
|
3
|
-
import { type
|
|
3
|
+
import { type HouseRoomHead, type HouseScope, type HouseView } from './read.js';
|
|
4
4
|
import type { HouseMode, HouseStreamEntry } from './transport.js';
|
|
5
5
|
export declare function partModels(scope: HouseScope, tracked: TrackedAuthority, seen: ReadonlySet<string>, final: boolean): Promise<RoomModels | undefined>;
|
|
6
|
-
export declare function manifestedModels(room:
|
|
6
|
+
export declare function manifestedModels(room: HouseRoomHead, tracked: TrackedAuthority): Promise<{
|
|
7
7
|
readonly models: RoomModels | undefined;
|
|
8
8
|
readonly seen: string[];
|
|
9
9
|
}>;
|
package/dist/model.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAIL,KAAK,
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAIL,KAAK,aAAa,EAElB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AA0BlE,wBAAgB,UAAU,CACxB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EACzB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAKjC;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAM/E;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAcjC;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC9C,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAWjC"}
|
package/dist/part.d.ts
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
export type RoomFrame = {
|
|
2
|
+
readonly kind: 'frame';
|
|
3
|
+
readonly payload: Uint8Array<ArrayBuffer>;
|
|
4
|
+
readonly bytes: number;
|
|
5
|
+
} | {
|
|
6
|
+
readonly kind: 'ended';
|
|
7
|
+
} | {
|
|
8
|
+
readonly kind: 'broken';
|
|
8
9
|
};
|
|
9
|
-
export
|
|
10
|
-
export declare function
|
|
11
|
-
export declare function
|
|
12
|
-
export declare function checkedPayload(frame: Uint8Array<ArrayBuffer>, listed: HousePart): Promise<Uint8Array<ArrayBuffer> | null>;
|
|
10
|
+
export type RoomFrames = () => Promise<RoomFrame>;
|
|
11
|
+
export declare function checkedPayload(frame: Uint8Array<ArrayBuffer>): Promise<Uint8Array<ArrayBuffer> | null>;
|
|
12
|
+
export declare function roomFrames(room: ReadableStream<Uint8Array>, arrived?: (bytes: number) => void, signal?: AbortSignal): RoomFrames;
|
|
13
13
|
export declare function gunzipped(payload: Uint8Array<ArrayBuffer>): ReadableStream<string>;
|
|
14
|
-
export declare function unverifiedPart(locator: string): ScopedRefusal;
|
|
15
14
|
//# sourceMappingURL=part.d.ts.map
|
package/dist/part.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"part.d.ts","sourceRoot":"","sources":["../src/part.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"part.d.ts","sourceRoot":"","sources":["../src/part.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,SAAS,GACjB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7F;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEhC,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;AAQlD,wBAAsB,cAAc,CAClC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,GAC7B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CASzC;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,EAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EACjC,MAAM,CAAC,EAAE,WAAW,GACnB,UAAU,CAwDZ;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAKlF"}
|
package/dist/part.js
CHANGED
|
@@ -1,54 +1,13 @@
|
|
|
1
1
|
const PART_MAGIC = 0x48505431;
|
|
2
2
|
const PART_HEAD_BYTES = 8;
|
|
3
3
|
const PART_DIGEST_BYTES = 32;
|
|
4
|
-
const PART_SHA256 = /^[0-9a-f]{64}$/u;
|
|
5
|
-
export const PART_ATTEMPTS = 3;
|
|
6
|
-
export const PART_UNVERIFIED = 'part_unverified';
|
|
7
|
-
export function parsePart(value) {
|
|
8
|
-
if (typeof value !== 'object' || value === null)
|
|
9
|
-
return null;
|
|
10
|
-
const { part, bytes, sha256 } = value;
|
|
11
|
-
if (typeof part !== 'string' || part.length === 0)
|
|
12
|
-
return null;
|
|
13
|
-
if (typeof bytes !== 'number' || !Number.isSafeInteger(bytes) || bytes <= 0)
|
|
14
|
-
return null;
|
|
15
|
-
if (typeof sha256 !== 'string' || !PART_SHA256.test(sha256))
|
|
16
|
-
return null;
|
|
17
|
-
return { part, bytes, sha256 };
|
|
18
|
-
}
|
|
19
|
-
function decoded(text) {
|
|
20
|
-
let binary;
|
|
21
|
-
try {
|
|
22
|
-
binary = atob(text);
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
const bytes = new Uint8Array(binary.length);
|
|
28
|
-
for (let at = 0; at < binary.length; at += 1)
|
|
29
|
-
bytes[at] = binary.charCodeAt(at);
|
|
30
|
-
return bytes;
|
|
31
|
-
}
|
|
32
4
|
function hex(bytes) {
|
|
33
5
|
let text = '';
|
|
34
6
|
for (const byte of bytes)
|
|
35
7
|
text += byte.toString(16).padStart(2, '0');
|
|
36
8
|
return text;
|
|
37
9
|
}
|
|
38
|
-
export function
|
|
39
|
-
if (arriving === undefined)
|
|
40
|
-
return undefined;
|
|
41
|
-
return (answered) => arriving(Math.min(listed.bytes, Math.floor((answered * 3) / 4)));
|
|
42
|
-
}
|
|
43
|
-
export function partFrame(body) {
|
|
44
|
-
if (typeof body !== 'object' || body === null)
|
|
45
|
-
return null;
|
|
46
|
-
const { part } = body;
|
|
47
|
-
return typeof part === 'string' ? decoded(part) : null;
|
|
48
|
-
}
|
|
49
|
-
export async function checkedPayload(frame, listed) {
|
|
50
|
-
if (frame.length !== listed.bytes)
|
|
51
|
-
return null;
|
|
10
|
+
export async function checkedPayload(frame) {
|
|
52
11
|
if (frame.length < PART_HEAD_BYTES + PART_DIGEST_BYTES)
|
|
53
12
|
return null;
|
|
54
13
|
const view = new DataView(frame.buffer, frame.byteOffset, frame.byteLength);
|
|
@@ -59,10 +18,69 @@ export async function checkedPayload(frame, listed) {
|
|
|
59
18
|
return null;
|
|
60
19
|
const payload = frame.subarray(PART_HEAD_BYTES, PART_HEAD_BYTES + length);
|
|
61
20
|
const digest = hex(new Uint8Array(await crypto.subtle.digest('SHA-256', payload)));
|
|
62
|
-
|
|
63
|
-
|
|
21
|
+
return hex(frame.subarray(PART_HEAD_BYTES + length)) === digest ? payload : null;
|
|
22
|
+
}
|
|
23
|
+
export function roomFrames(room, arrived, signal) {
|
|
24
|
+
const reader = room.getReader();
|
|
25
|
+
signal?.addEventListener('abort', () => void reader.cancel().catch(() => { }), { once: true });
|
|
26
|
+
const chunks = [];
|
|
27
|
+
let held = 0;
|
|
28
|
+
let received = 0;
|
|
29
|
+
let ended = false;
|
|
30
|
+
async function filled(bytes) {
|
|
31
|
+
while (held < bytes && !ended) {
|
|
32
|
+
const read = await reader.read();
|
|
33
|
+
if (read.done) {
|
|
34
|
+
ended = true;
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
chunks.push(read.value);
|
|
38
|
+
held += read.value.byteLength;
|
|
39
|
+
received += read.value.byteLength;
|
|
40
|
+
arrived?.(received);
|
|
41
|
+
}
|
|
42
|
+
return held >= bytes;
|
|
64
43
|
}
|
|
65
|
-
|
|
44
|
+
function taken(bytes) {
|
|
45
|
+
const out = new Uint8Array(bytes);
|
|
46
|
+
let at = 0;
|
|
47
|
+
while (at < bytes) {
|
|
48
|
+
const chunk = chunks[0];
|
|
49
|
+
const used = Math.min(chunk.byteLength, bytes - at);
|
|
50
|
+
out.set(chunk.subarray(0, used), at);
|
|
51
|
+
at += used;
|
|
52
|
+
if (used === chunk.byteLength)
|
|
53
|
+
chunks.shift();
|
|
54
|
+
else
|
|
55
|
+
chunks[0] = chunk.subarray(used);
|
|
56
|
+
}
|
|
57
|
+
held -= bytes;
|
|
58
|
+
return out;
|
|
59
|
+
}
|
|
60
|
+
return async () => {
|
|
61
|
+
try {
|
|
62
|
+
if (!(await filled(PART_HEAD_BYTES)))
|
|
63
|
+
return held === 0 ? { kind: 'ended' } : { kind: 'broken' };
|
|
64
|
+
const head = taken(PART_HEAD_BYTES);
|
|
65
|
+
const view = new DataView(head.buffer);
|
|
66
|
+
if (view.getUint32(0) !== PART_MAGIC)
|
|
67
|
+
return { kind: 'broken' };
|
|
68
|
+
const length = view.getUint32(4);
|
|
69
|
+
const rest = length + PART_DIGEST_BYTES;
|
|
70
|
+
if (!(await filled(rest)))
|
|
71
|
+
return { kind: 'broken' };
|
|
72
|
+
const frame = new Uint8Array(PART_HEAD_BYTES + rest);
|
|
73
|
+
frame.set(head, 0);
|
|
74
|
+
frame.set(taken(rest), PART_HEAD_BYTES);
|
|
75
|
+
const payload = await checkedPayload(frame);
|
|
76
|
+
return payload === null
|
|
77
|
+
? { kind: 'broken' }
|
|
78
|
+
: { kind: 'frame', payload, bytes: frame.byteLength };
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return { kind: 'broken' };
|
|
82
|
+
}
|
|
83
|
+
};
|
|
66
84
|
}
|
|
67
85
|
export function gunzipped(payload) {
|
|
68
86
|
return new Blob([payload])
|
|
@@ -70,13 +88,3 @@ export function gunzipped(payload) {
|
|
|
70
88
|
.pipeThrough(new DecompressionStream('gzip'))
|
|
71
89
|
.pipeThrough(new TextDecoderStream());
|
|
72
90
|
}
|
|
73
|
-
export function unverifiedPart(locator) {
|
|
74
|
-
return {
|
|
75
|
-
kind: 'scoped-refusal',
|
|
76
|
-
locator,
|
|
77
|
-
scope: 'undisclosed',
|
|
78
|
-
code: PART_UNVERIFIED,
|
|
79
|
-
fields: {},
|
|
80
|
-
retryable: true,
|
|
81
|
-
};
|
|
82
|
-
}
|
package/dist/read.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { type AdapterFailure, type BinaryFile, type
|
|
1
|
+
import { type AdapterFailure, type BinaryFile, type BootstrapPage, type RefreshResult, type RoomModels, type TransportUncertainty } from '@agentshouse/mdruntime';
|
|
2
2
|
import type { TrackedAuthority } from './discovery.js';
|
|
3
|
-
import { type HousePart } from './part.js';
|
|
4
3
|
import type { HouseMode } from './transport.js';
|
|
5
4
|
import { type LogPosition } from './version.js';
|
|
6
5
|
export type HeadChange = BootstrapPage['changes'][string];
|
|
@@ -50,14 +49,9 @@ export type HouseModels = {
|
|
|
50
49
|
files: readonly HouseManifestFile[];
|
|
51
50
|
contents: readonly HouseContent[];
|
|
52
51
|
};
|
|
53
|
-
export type
|
|
52
|
+
export type HouseRoomHead = LogPosition & {
|
|
54
53
|
anchor: string;
|
|
55
54
|
models: HouseModels;
|
|
56
|
-
parts: readonly HousePart[];
|
|
57
|
-
};
|
|
58
|
-
export type HouseParted = {
|
|
59
|
-
rooms: readonly HouseRoomParts[];
|
|
60
|
-
next?: string;
|
|
61
55
|
};
|
|
62
56
|
export type HouseGrant = {
|
|
63
57
|
operation: string;
|
|
@@ -115,13 +109,14 @@ export declare function headChange(held: {
|
|
|
115
109
|
readonly created_at?: unknown;
|
|
116
110
|
}): HeadChange | undefined | null;
|
|
117
111
|
export declare function binaryFileOf(held: Readonly<Record<string, unknown>>): BinaryFile | undefined | null;
|
|
118
|
-
export declare function
|
|
119
|
-
export declare function
|
|
120
|
-
export declare function
|
|
121
|
-
export declare function
|
|
122
|
-
export declare function
|
|
123
|
-
|
|
124
|
-
|
|
112
|
+
export declare function roomHead(payload: Uint8Array<ArrayBuffer>, mode: HouseMode): Promise<HouseRoomHead | null>;
|
|
113
|
+
export declare function manifested(room: HouseRoomHead, pageToken: string, models: RoomModels | undefined): BootstrapPage;
|
|
114
|
+
export declare function modelScope(room: HouseRoomHead): HouseScope;
|
|
115
|
+
export declare function emptyScope(room: HouseRoomHead): HouseScope;
|
|
116
|
+
export declare function housePart(room: HouseRoomHead, payload: Uint8Array<ArrayBuffer>, mode: HouseMode): Promise<{
|
|
117
|
+
scope: HouseScope;
|
|
118
|
+
ended: boolean;
|
|
119
|
+
} | TransportUncertainty>;
|
|
125
120
|
export declare function parseEnumeration(body: unknown, mode: HouseMode): HouseEnumeration | null;
|
|
126
121
|
export declare function wholeView(first: HouseView, more: (page: HousePage) => Promise<HouseView | PageFailure>): Promise<HouseView | PageFailure>;
|
|
127
122
|
export declare function bootstrapping(scope: HouseScope): Generator<number, BootstrapPage, void>;
|
package/dist/read.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../src/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../src/read.ts"],"names":[],"mappings":"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"}
|
package/dist/read.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { paced, patching, ROW_WEIGHT, stepped, } from '@agentshouse/mdruntime';
|
|
2
|
-
import {
|
|
2
|
+
import { gunzipped } from './part.js';
|
|
3
3
|
import { DECIMAL, readPosition, roomVersion } from './version.js';
|
|
4
4
|
const REVISION_FILE = /^fr_([0-9a-z]+)\.[0-9a-z]+\.[0-9a-z]$/u;
|
|
5
5
|
function fileOf(revision) {
|
|
@@ -98,10 +98,10 @@ export function parseFileAddress(body) {
|
|
|
98
98
|
function changeAuthor(value) {
|
|
99
99
|
if (typeof value !== 'object' || value === null)
|
|
100
100
|
return null;
|
|
101
|
-
const { user, site, inbox, name } = value;
|
|
101
|
+
const { user, site, inbox, app, name } = value;
|
|
102
102
|
if (typeof name !== 'string')
|
|
103
103
|
return null;
|
|
104
|
-
const named = [user, site, inbox].filter((id) => id !== undefined);
|
|
104
|
+
const named = [user, site, inbox, app].filter((id) => id !== undefined);
|
|
105
105
|
if (named.length !== 1)
|
|
106
106
|
return null;
|
|
107
107
|
if (typeof user === 'string')
|
|
@@ -110,6 +110,8 @@ function changeAuthor(value) {
|
|
|
110
110
|
return { kind: 'site', id: site, name };
|
|
111
111
|
if (typeof inbox === 'string')
|
|
112
112
|
return { kind: 'inbox', id: inbox, name };
|
|
113
|
+
if (typeof app === 'string')
|
|
114
|
+
return { kind: 'app', id: app, name };
|
|
113
115
|
return null;
|
|
114
116
|
}
|
|
115
117
|
export function headChange(held) {
|
|
@@ -183,14 +185,12 @@ function parseModels(value, mode) {
|
|
|
183
185
|
}
|
|
184
186
|
return { files, contents };
|
|
185
187
|
}
|
|
186
|
-
function
|
|
188
|
+
function parseRoomHead(value, mode) {
|
|
187
189
|
if (typeof value !== 'object' || value === null)
|
|
188
190
|
return null;
|
|
189
191
|
const held = value;
|
|
190
192
|
if (typeof held.manifest !== 'object' || held.manifest === null)
|
|
191
193
|
return null;
|
|
192
|
-
if (!Array.isArray(held.parts))
|
|
193
|
-
return null;
|
|
194
194
|
const models = parseModels(held.models, mode);
|
|
195
195
|
if (models === null)
|
|
196
196
|
return null;
|
|
@@ -202,44 +202,22 @@ function parseRoomParts(value, mode) {
|
|
|
202
202
|
return null;
|
|
203
203
|
if (typeof manifest.room_handle !== 'string' || manifest.room_handle.length === 0)
|
|
204
204
|
return null;
|
|
205
|
-
|
|
206
|
-
for (const entry of held.parts) {
|
|
207
|
-
const part = parsePart(entry);
|
|
208
|
-
if (part === null)
|
|
209
|
-
return null;
|
|
210
|
-
parts.push(part);
|
|
211
|
-
}
|
|
212
|
-
return { anchor: manifest.anchor, ...at, models, parts };
|
|
205
|
+
return { anchor: manifest.anchor, ...at, models };
|
|
213
206
|
}
|
|
214
|
-
export function
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
if (room === null)
|
|
223
|
-
return null;
|
|
224
|
-
rooms.push(room);
|
|
207
|
+
export async function roomHead(payload, mode) {
|
|
208
|
+
let text = '';
|
|
209
|
+
try {
|
|
210
|
+
for await (const chunk of gunzipped(payload))
|
|
211
|
+
text += chunk;
|
|
212
|
+
return text.endsWith('\n') && text.indexOf('\n') === text.length - 1
|
|
213
|
+
? parseRoomHead(JSON.parse(text), mode)
|
|
214
|
+
: null;
|
|
225
215
|
}
|
|
226
|
-
|
|
227
|
-
return { rooms };
|
|
228
|
-
const next = body.next;
|
|
229
|
-
if (typeof next !== 'object' || next === null || typeof next.room !== 'string')
|
|
216
|
+
catch {
|
|
230
217
|
return null;
|
|
231
|
-
|
|
232
|
-
}
|
|
233
|
-
export function parseSiteParted(body) {
|
|
234
|
-
return parseRoomParts(body, 'site');
|
|
235
|
-
}
|
|
236
|
-
export function partInventory(room) {
|
|
237
|
-
return {
|
|
238
|
-
parts: room.parts.length,
|
|
239
|
-
bytes: room.parts.reduce((sum, part) => sum + part.bytes, 0),
|
|
240
|
-
};
|
|
218
|
+
}
|
|
241
219
|
}
|
|
242
|
-
export function manifested(room,
|
|
220
|
+
export function manifested(room, pageToken, models) {
|
|
243
221
|
return {
|
|
244
222
|
kind: 'bootstrap',
|
|
245
223
|
roomVersion: roomVersion(room),
|
|
@@ -247,7 +225,6 @@ export function manifested(room, inventory, pageToken, models) {
|
|
|
247
225
|
revisions: {},
|
|
248
226
|
changes: {},
|
|
249
227
|
binaryFiles: {},
|
|
250
|
-
inventory,
|
|
251
228
|
pageToken,
|
|
252
229
|
...(models === undefined ? {} : { models }),
|
|
253
230
|
};
|
|
@@ -265,6 +242,8 @@ export function emptyScope(room) {
|
|
|
265
242
|
};
|
|
266
243
|
}
|
|
267
244
|
function partLine(line, mode, read) {
|
|
245
|
+
if (read.ended)
|
|
246
|
+
return false;
|
|
268
247
|
let entry;
|
|
269
248
|
try {
|
|
270
249
|
entry = JSON.parse(line);
|
|
@@ -272,6 +251,10 @@ function partLine(line, mode, read) {
|
|
|
272
251
|
catch {
|
|
273
252
|
return false;
|
|
274
253
|
}
|
|
254
|
+
if (endLine(entry)) {
|
|
255
|
+
read.ended = true;
|
|
256
|
+
return true;
|
|
257
|
+
}
|
|
275
258
|
if (folderLine(entry)) {
|
|
276
259
|
read.folders.push(entry.folder);
|
|
277
260
|
return true;
|
|
@@ -288,7 +271,7 @@ function partLine(line, mode, read) {
|
|
|
288
271
|
return true;
|
|
289
272
|
}
|
|
290
273
|
async function partRead(chunks, mode) {
|
|
291
|
-
const read = { files: [], contents: [], folders: [] };
|
|
274
|
+
const read = { files: [], contents: [], folders: [], ended: false };
|
|
292
275
|
const pace = paced();
|
|
293
276
|
const unfinished = [];
|
|
294
277
|
for (let chunk = await chunks.read(); chunk.done !== true; chunk = await chunks.read()) {
|
|
@@ -311,17 +294,22 @@ async function partRead(chunks, mode) {
|
|
|
311
294
|
}
|
|
312
295
|
return unfinished.length === 0 ? read : null;
|
|
313
296
|
}
|
|
297
|
+
function endLine(entry) {
|
|
298
|
+
if (typeof entry !== 'object' || entry === null || !('end' in entry))
|
|
299
|
+
return false;
|
|
300
|
+
return entry.end === true && Object.keys(entry).length === 1;
|
|
301
|
+
}
|
|
314
302
|
function folderLine(entry) {
|
|
315
303
|
if (typeof entry !== 'object' || entry === null || !('folder' in entry))
|
|
316
304
|
return false;
|
|
317
305
|
return typeof entry.folder === 'string' && Object.keys(entry).length === 1;
|
|
318
306
|
}
|
|
319
|
-
export async function housePart(room,
|
|
320
|
-
const payload = await checkedPayload(frame, listed);
|
|
321
|
-
if (payload === null)
|
|
322
|
-
return null;
|
|
307
|
+
export async function housePart(room, payload, mode) {
|
|
323
308
|
const read = await partRead(gunzipped(payload).getReader(), mode).catch(() => null);
|
|
324
|
-
|
|
309
|
+
if (read === null)
|
|
310
|
+
return { kind: 'transport-uncertainty' };
|
|
311
|
+
const { ended, ...scope } = read;
|
|
312
|
+
return { scope: { ...emptyScope(room), ...scope }, ended };
|
|
325
313
|
}
|
|
326
314
|
function folderChange(value) {
|
|
327
315
|
if (typeof value !== 'object' || value === null)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { BootstrapResult, RoomModels } from '@agentshouse/mdruntime';
|
|
2
|
+
import type { TrackedAuthority } from './discovery.js';
|
|
3
|
+
import { type HouseScope } from './read.js';
|
|
4
|
+
import type { HouseMode } from './transport.js';
|
|
5
|
+
export type StreamedPart = {
|
|
6
|
+
readonly scope: HouseScope;
|
|
7
|
+
readonly first: boolean;
|
|
8
|
+
readonly ended: boolean;
|
|
9
|
+
readonly models: RoomModels | undefined;
|
|
10
|
+
readonly pageToken: string | undefined;
|
|
11
|
+
readonly bytes: number;
|
|
12
|
+
};
|
|
13
|
+
export declare function roomStreams(mode: HouseMode): {
|
|
14
|
+
head: (entry: TrackedAuthority, room: ReadableStream<Uint8Array>, arriving: ((bytes: number) => void) | undefined, signal: AbortSignal | undefined) => Promise<BootstrapResult>;
|
|
15
|
+
part: (entry: TrackedAuthority, token: string) => Promise<StreamedPart | Exclude<BootstrapResult, {
|
|
16
|
+
kind: 'bootstrap';
|
|
17
|
+
}>>;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=room-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room-stream.d.ts","sourceRoot":"","sources":["../src/room-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,OAAO,EAAuD,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AACjG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAYhD,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS;kBAKhC,gBAAgB,QACjB,cAAc,CAAC,UAAU,CAAC,YACtB,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,UACvC,WAAW,GAAG,SAAS,KAC9B,OAAO,CAAC,eAAe,CAAC;kBAelB,gBAAgB,SAChB,MAAM,KACZ,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,eAAe,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC,CAAC;EAkC3E"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { manifestedModels, partModels } from './model.js';
|
|
2
|
+
import { roomFrames } from './part.js';
|
|
3
|
+
import { housePart, manifested, roomHead } from './read.js';
|
|
4
|
+
const UNCERTAIN = { kind: 'transport-uncertainty' };
|
|
5
|
+
export function roomStreams(mode) {
|
|
6
|
+
const open = new Map();
|
|
7
|
+
let opened = 0;
|
|
8
|
+
async function head(entry, room, arriving, signal) {
|
|
9
|
+
const frames = roomFrames(room, arriving, signal);
|
|
10
|
+
const first = await frames();
|
|
11
|
+
if (first.kind !== 'frame')
|
|
12
|
+
return UNCERTAIN;
|
|
13
|
+
const held = await roomHead(first.payload, mode);
|
|
14
|
+
if (held === null || held.anchor !== entry.authority)
|
|
15
|
+
return UNCERTAIN;
|
|
16
|
+
const { models, seen } = await manifestedModels(held, entry);
|
|
17
|
+
opened += 1;
|
|
18
|
+
const id = String(opened);
|
|
19
|
+
open.set(id, { entry, head: held, frames, next: 1, seen });
|
|
20
|
+
signal?.addEventListener('abort', () => open.delete(id), { once: true });
|
|
21
|
+
return { ...manifested(held, `${id}:1`, models), bytes: first.bytes };
|
|
22
|
+
}
|
|
23
|
+
async function part(entry, token) {
|
|
24
|
+
const [id = '', at = ''] = token.split(':');
|
|
25
|
+
const room = open.get(id);
|
|
26
|
+
if (room === undefined || room.entry.locator !== entry.locator || String(room.next) !== at)
|
|
27
|
+
return UNCERTAIN;
|
|
28
|
+
const frame = await room.frames();
|
|
29
|
+
if (frame.kind !== 'frame') {
|
|
30
|
+
open.delete(id);
|
|
31
|
+
return UNCERTAIN;
|
|
32
|
+
}
|
|
33
|
+
const read = await housePart(room.head, frame.payload, mode);
|
|
34
|
+
if ('kind' in read) {
|
|
35
|
+
open.delete(id);
|
|
36
|
+
return read;
|
|
37
|
+
}
|
|
38
|
+
const { scope, ended } = read;
|
|
39
|
+
const first = room.next === 1;
|
|
40
|
+
room.next += 1;
|
|
41
|
+
room.seen = [
|
|
42
|
+
...room.seen,
|
|
43
|
+
...(scope.files.some((file) => file.path === entry.schema) ? [entry.schema] : []),
|
|
44
|
+
];
|
|
45
|
+
if (ended)
|
|
46
|
+
open.delete(id);
|
|
47
|
+
return {
|
|
48
|
+
scope,
|
|
49
|
+
first,
|
|
50
|
+
ended,
|
|
51
|
+
models: await partModels(scope, entry, new Set(room.seen), ended),
|
|
52
|
+
pageToken: ended ? undefined : `${id}:${room.next}`,
|
|
53
|
+
bytes: frame.bytes,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
return { head, part };
|
|
57
|
+
}
|
package/dist/room-types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const INBOX_CHANNEL_KINDS: readonly ['telegram-bot', 'whatsapp', 'messenger', 'instagram', 'viber', 'tiktok'];
|
|
1
|
+
export declare const INBOX_CHANNEL_KINDS: readonly ['telegram-bot', 'telegram-business', 'whatsapp', 'messenger', 'instagram', 'viber', 'tiktok'];
|
|
2
2
|
export type InboxChannelKind = (typeof INBOX_CHANNEL_KINDS)[number];
|
|
3
3
|
export declare const INBOX_CHAT_TYPE = "inbox-chat";
|
|
4
4
|
export declare const INBOX_MESSAGE_TYPE = "inbox-message";
|
package/dist/room-types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"room-types.d.ts","sourceRoot":"","sources":["../src/room-types.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB,YAC9B,cAAc,EACd,UAAU,EACV,WAAW,EACX,WAAW,EACX,OAAO,EACP,QAAQ,CACA,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,eAAO,MAAM,eAAe,eAAe,CAAC;AAE5C,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,eAAO,MAAM,yBAAyB,UAAwC,CAAC;AAyB/E,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"room-types.d.ts","sourceRoot":"","sources":["../src/room-types.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB,YAC9B,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,WAAW,EACX,OAAO,EACP,QAAQ,CACA,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,eAAO,MAAM,eAAe,eAAe,CAAC;AAE5C,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,eAAO,MAAM,yBAAyB,UAAwC,CAAC;AAyB/E,eAAO,MAAM,gBAAgB,QA8FjB,CAAC"}
|
package/dist/room-types.js
CHANGED
|
@@ -2,6 +2,7 @@ import { APP_REFERENCE_PATTERN } from './app-reference.js';
|
|
|
2
2
|
import { HOUSE_MODEL_TYPES } from './house-model.js';
|
|
3
3
|
export const INBOX_CHANNEL_KINDS = [
|
|
4
4
|
'telegram-bot',
|
|
5
|
+
'telegram-business',
|
|
5
6
|
'whatsapp',
|
|
6
7
|
'messenger',
|
|
7
8
|
'instagram',
|
|
@@ -60,6 +61,7 @@ export const HOUSE_ROOM_TYPES = [
|
|
|
60
61
|
` channel_message: ${IDENTITY}`,
|
|
61
62
|
' state: { enum: [sending, sent, failed] }',
|
|
62
63
|
' reason: { type: string }',
|
|
64
|
+
' labelled: { const: true }',
|
|
63
65
|
' reactions:',
|
|
64
66
|
' type: array',
|
|
65
67
|
' items:',
|
package/dist/site.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../src/site.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,
|
|
1
|
+
{"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../src/site.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAUR,MAAM,wBAAwB,CAAC;AAwBhC,OAAO,EAML,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAgCxB,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAqN1F"}
|