@agentshouse/mdruntime-adapter 0.1.0-ce1149641691d → 0.1.0-ce3ced044cab5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/actions.d.ts +6 -26
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +18 -150
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +167 -223
- package/dist/app-reference.d.ts +2 -0
- package/dist/app-reference.d.ts.map +1 -0
- package/dist/app-reference.js +2 -0
- package/dist/crockford.d.ts +4 -0
- package/dist/crockford.d.ts.map +1 -0
- package/dist/crockford.js +3 -0
- package/dist/discovery.d.ts +5 -10
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +18 -32
- 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 +2 -0
- package/dist/house-model.d.ts.map +1 -0
- package/dist/house-model.js +486 -0
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/model.d.ts +5 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +11 -13
- package/dist/part.d.ts +12 -11
- package/dist/part.d.ts.map +1 -1
- package/dist/part.js +66 -56
- package/dist/read.d.ts +33 -17
- package/dist/read.d.ts.map +1 -1
- package/dist/read.js +187 -122
- 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 +7 -0
- package/dist/room-types.d.ts.map +1 -0
- package/dist/room-types.js +125 -0
- package/dist/site.d.ts.map +1 -1
- package/dist/site.js +43 -92
- package/dist/stream.d.ts +1 -0
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +17 -2
- package/dist/transport.d.ts +14 -8
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +2 -1
- package/dist/upload.d.ts +12 -0
- package/dist/upload.d.ts.map +1 -0
- package/dist/upload.js +63 -0
- package/dist/write.d.ts +4 -0
- package/dist/write.d.ts.map +1 -1
- package/dist/write.js +22 -18
- package/package.json +8 -4
- package/AGENTS.md +0 -304
- package/dist/handed.d.ts +0 -15
- package/dist/handed.d.ts.map +0 -1
- package/dist/handed.js +0 -45
- package/dist/referrer.d.ts +0 -7
- package/dist/referrer.d.ts.map +0 -1
- package/dist/referrer.js +0 -35
package/dist/model.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { sha256Hex } from './digest.js';
|
|
2
|
-
import { schemaOf, schemaPath } from './read.js';
|
|
2
|
+
import { modelScope, schemaOf, schemaPath, } from './read.js';
|
|
3
3
|
const MODEL_ABSENT = { kind: 'model-unavailable', reason: 'not-readable' };
|
|
4
4
|
const ABSENT_SCHEMA = { schema: null, version: null, revision: null };
|
|
5
5
|
async function heldModel(read, identity) {
|
|
@@ -12,19 +12,10 @@ async function heldModel(read, identity) {
|
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
14
|
async function modelsOf(tracked, read) {
|
|
15
|
-
const models = {};
|
|
16
15
|
const collection = read(tracked.schema);
|
|
17
|
-
if (collection
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
if (tracked.houseModel !== null) {
|
|
21
|
-
const root = tracked.houseModel.root;
|
|
22
|
-
const selection = read(root);
|
|
23
|
-
if (selection !== undefined) {
|
|
24
|
-
models.selection = await heldModel(selection, schemaPath(tracked.handle, root));
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return models.collection === undefined && models.selection === undefined ? undefined : models;
|
|
16
|
+
if (collection === undefined)
|
|
17
|
+
return undefined;
|
|
18
|
+
return { collection: await heldModel(collection, schemaPath(tracked.handle, tracked.schema)) };
|
|
28
19
|
}
|
|
29
20
|
export function partModels(scope, tracked, seen, final) {
|
|
30
21
|
return modelsOf(tracked, (schema) => {
|
|
@@ -33,6 +24,13 @@ export function partModels(scope, tracked, seen, final) {
|
|
|
33
24
|
return final && !seen.has(schema) ? ABSENT_SCHEMA : undefined;
|
|
34
25
|
});
|
|
35
26
|
}
|
|
27
|
+
export async function manifestedModels(room, tracked) {
|
|
28
|
+
const scope = modelScope(room);
|
|
29
|
+
return {
|
|
30
|
+
models: await partModels(scope, tracked, new Set(), true),
|
|
31
|
+
seen: scope.files.some((file) => file.path === tracked.schema) ? [tracked.schema] : [],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
36
34
|
export function viewModels(view, tracked) {
|
|
37
35
|
return modelsOf(tracked, (schema) => {
|
|
38
36
|
const change = view.changes.find((candidate) => candidate.path === schema);
|
package/dist/part.d.ts
CHANGED
|
@@ -1,13 +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 checkedPayload(
|
|
11
|
-
export declare function
|
|
12
|
-
export declare function
|
|
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
|
+
export declare function gunzipped(payload: Uint8Array<ArrayBuffer>): ReadableStream<string>;
|
|
13
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,49 +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 async function checkedPayload(
|
|
39
|
-
if (typeof body !== 'object' || body === null)
|
|
40
|
-
return null;
|
|
41
|
-
const { part } = body;
|
|
42
|
-
if (typeof part !== 'string')
|
|
43
|
-
return null;
|
|
44
|
-
const frame = decoded(part);
|
|
45
|
-
if (frame === null || frame.length !== listed.bytes)
|
|
46
|
-
return null;
|
|
10
|
+
export async function checkedPayload(frame) {
|
|
47
11
|
if (frame.length < PART_HEAD_BYTES + PART_DIGEST_BYTES)
|
|
48
12
|
return null;
|
|
49
13
|
const view = new DataView(frame.buffer, frame.byteOffset, frame.byteLength);
|
|
@@ -54,27 +18,73 @@ export async function checkedPayload(body, listed) {
|
|
|
54
18
|
return null;
|
|
55
19
|
const payload = frame.subarray(PART_HEAD_BYTES, PART_HEAD_BYTES + length);
|
|
56
20
|
const digest = hex(new Uint8Array(await crypto.subtle.digest('SHA-256', payload)));
|
|
57
|
-
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
60
|
-
return payload;
|
|
21
|
+
return hex(frame.subarray(PART_HEAD_BYTES + length)) === digest ? payload : null;
|
|
61
22
|
}
|
|
62
|
-
export
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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;
|
|
66
43
|
}
|
|
67
|
-
|
|
68
|
-
|
|
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;
|
|
69
59
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
+
}
|
|
79
83
|
};
|
|
80
84
|
}
|
|
85
|
+
export function gunzipped(payload) {
|
|
86
|
+
return new Blob([payload])
|
|
87
|
+
.stream()
|
|
88
|
+
.pipeThrough(new DecompressionStream('gzip'))
|
|
89
|
+
.pipeThrough(new TextDecoderStream());
|
|
90
|
+
}
|
package/dist/read.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { type AdapterFailure, type BinaryFile, type BootstrapPage, type RefreshResult, type TransportUncertainty } from '@agentshouse/mdruntime';
|
|
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];
|
|
@@ -11,10 +10,13 @@ export type Answered = {
|
|
|
11
10
|
readonly changes: Map<string, HeadChange>;
|
|
12
11
|
readonly binaryFiles: Map<string, BinaryFile>;
|
|
13
12
|
readonly removals: Set<string>;
|
|
13
|
+
readonly folders: Set<string>;
|
|
14
|
+
readonly folderRemovals: Set<string>;
|
|
14
15
|
};
|
|
15
16
|
export declare function answering(): Answered;
|
|
16
17
|
export declare function revised(answer: Answered, path: string, revision: string): void;
|
|
17
18
|
export declare function forgotten(answer: Answered, path: string): void;
|
|
19
|
+
export declare function folded(answer: Answered, path: string, removed: boolean): void;
|
|
18
20
|
export declare function answered(answer: Answered): Generator<number, {
|
|
19
21
|
documents: Readonly<Record<string, string>>;
|
|
20
22
|
revisions: Readonly<Record<string, string>>;
|
|
@@ -22,6 +24,8 @@ export declare function answered(answer: Answered): Generator<number, {
|
|
|
22
24
|
changes: Readonly<Record<string, HeadChange>>;
|
|
23
25
|
binaryFiles: Readonly<Record<string, BinaryFile>>;
|
|
24
26
|
removals: readonly string[];
|
|
27
|
+
folders?: readonly string[];
|
|
28
|
+
folderRemovals?: readonly string[];
|
|
25
29
|
}, void>;
|
|
26
30
|
export type HouseManifestFile = {
|
|
27
31
|
path: string;
|
|
@@ -39,23 +43,26 @@ export type HouseScope = LogPosition & {
|
|
|
39
43
|
anchor: string;
|
|
40
44
|
files: readonly HouseManifestFile[];
|
|
41
45
|
contents: readonly HouseContent[];
|
|
46
|
+
folders?: readonly string[];
|
|
42
47
|
};
|
|
43
|
-
export type
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
export type HouseModels = {
|
|
49
|
+
files: readonly HouseManifestFile[];
|
|
50
|
+
contents: readonly HouseContent[];
|
|
46
51
|
};
|
|
47
|
-
export type
|
|
48
|
-
|
|
49
|
-
|
|
52
|
+
export type HouseRoomHead = LogPosition & {
|
|
53
|
+
anchor: string;
|
|
54
|
+
models: HouseModels;
|
|
50
55
|
};
|
|
51
56
|
export type HouseGrant = {
|
|
52
|
-
method: 'GET';
|
|
53
|
-
url: string;
|
|
54
|
-
} | {
|
|
55
|
-
method: 'POST';
|
|
56
57
|
operation: string;
|
|
57
58
|
url: string;
|
|
58
59
|
};
|
|
60
|
+
export type HouseFileAddress = {
|
|
61
|
+
url: string;
|
|
62
|
+
name: string;
|
|
63
|
+
sha256: string;
|
|
64
|
+
mediaType: string;
|
|
65
|
+
};
|
|
59
66
|
export type HouseChange = {
|
|
60
67
|
path: string;
|
|
61
68
|
removed: true;
|
|
@@ -77,9 +84,14 @@ export type HousePage = {
|
|
|
77
84
|
through: string;
|
|
78
85
|
read: number;
|
|
79
86
|
};
|
|
87
|
+
export type HouseFolder = {
|
|
88
|
+
path: string;
|
|
89
|
+
removed: boolean;
|
|
90
|
+
};
|
|
80
91
|
export type HouseView = LogPosition & {
|
|
81
92
|
authority: string;
|
|
82
93
|
changes: readonly HouseChange[];
|
|
94
|
+
folders?: readonly HouseFolder[];
|
|
83
95
|
next?: HousePage;
|
|
84
96
|
};
|
|
85
97
|
type PageFailure = AdapterFailure | {
|
|
@@ -91,18 +103,22 @@ export type HouseEnumeration = {
|
|
|
91
103
|
export declare function authorityRoot(handle: string): string;
|
|
92
104
|
export declare function schemaPath(handle: string, schema: string): string;
|
|
93
105
|
export declare function parseGrant(body: unknown): HouseGrant | null;
|
|
106
|
+
export declare function parseFileAddress(body: unknown): HouseFileAddress | null;
|
|
94
107
|
export declare function headChange(held: {
|
|
95
108
|
readonly author?: unknown;
|
|
96
109
|
readonly created_at?: unknown;
|
|
97
110
|
}): HeadChange | undefined | null;
|
|
98
111
|
export declare function binaryFileOf(held: Readonly<Record<string, unknown>>): BinaryFile | undefined | null;
|
|
99
|
-
export declare function
|
|
100
|
-
export declare function
|
|
101
|
-
export declare function
|
|
102
|
-
export declare function
|
|
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>;
|
|
103
120
|
export declare function parseEnumeration(body: unknown, mode: HouseMode): HouseEnumeration | null;
|
|
104
121
|
export declare function wholeView(first: HouseView, more: (page: HousePage) => Promise<HouseView | PageFailure>): Promise<HouseView | PageFailure>;
|
|
105
|
-
export declare function advancedScope(scope: HouseScope, view: HouseView): Generator<number, HouseScope, void>;
|
|
106
122
|
export declare function bootstrapping(scope: HouseScope): Generator<number, BootstrapPage, void>;
|
|
107
123
|
export type HouseSchema = {
|
|
108
124
|
schema: string | null;
|
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,
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../src/read.ts"],"names":[],"mappings":"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"}
|