@agentshouse/mdruntime-adapter 0.1.0-cca5d676bc88e → 0.1.0-ccda1a2da11c3
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 +291 -213
- package/dist/actions.d.ts +69 -2
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +197 -198
- package/dist/adapter.d.ts +1 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +378 -112
- package/dist/discovery.d.ts +7 -6
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +50 -18
- package/dist/gather.d.ts +2 -1
- package/dist/gather.d.ts.map +1 -1
- package/dist/gather.js +15 -20
- 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 +1 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +21 -7
- package/dist/part.d.ts +13 -0
- package/dist/part.d.ts.map +1 -0
- package/dist/part.js +80 -0
- package/dist/read.d.ts +72 -20
- package/dist/read.d.ts.map +1 -1
- package/dist/read.js +353 -155
- package/dist/referrer.d.ts +9 -0
- package/dist/referrer.d.ts.map +1 -0
- package/dist/referrer.js +41 -0
- package/dist/refusal.d.ts +5 -9
- package/dist/refusal.d.ts.map +1 -1
- package/dist/refusal.js +31 -17
- package/dist/room-types.d.ts +6 -0
- package/dist/room-types.d.ts.map +1 -0
- package/dist/room-types.js +66 -0
- package/dist/site.d.ts +1 -1
- package/dist/site.d.ts.map +1 -1
- package/dist/site.js +184 -62
- package/dist/stream.d.ts +6 -4
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +360 -42
- package/dist/transport.d.ts +67 -11
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +3 -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 +14 -9
- package/dist/write.d.ts.map +1 -1
- package/dist/write.js +172 -47
- 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/discovery.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { Capability, DiscoveredRoom, Discovery, ProviderLimit, Retention } from '@agentshouse/mdruntime';
|
|
1
|
+
import type { Capability, DiscoveredRoom, Discovery, Member, ProviderLimit, Retention } from '@agentshouse/mdruntime';
|
|
2
2
|
import { type LogPosition } from './version.js';
|
|
3
3
|
export declare const PROVIDER_ACTIONS = "provider-actions";
|
|
4
4
|
export declare const DISCOVER_PREFIXES: readonly string[];
|
|
5
|
-
export declare const PRIVATE_HANDLE = "private";
|
|
6
5
|
export type HouseBounds = {
|
|
7
6
|
max_authored_file_bytes: number;
|
|
8
7
|
max_batch_operations: number;
|
|
@@ -14,15 +13,16 @@ export type HouseBounds = {
|
|
|
14
13
|
max_inline_body_bytes: number;
|
|
15
14
|
max_upload_bytes: number;
|
|
16
15
|
max_prefixes: number;
|
|
16
|
+
max_held_files: number;
|
|
17
17
|
change_retention_seconds: number;
|
|
18
18
|
operation_retention_seconds: number;
|
|
19
|
+
max_move_documents?: number;
|
|
19
20
|
};
|
|
20
21
|
export type HouseOperations = {
|
|
21
|
-
read: readonly string[];
|
|
22
|
-
sync: readonly string[];
|
|
23
22
|
write: readonly string[];
|
|
24
23
|
delete: readonly string[];
|
|
25
24
|
};
|
|
25
|
+
export type HouseReadLevel = 'mcp' | 'online' | 'local';
|
|
26
26
|
export type HouseModel = {
|
|
27
27
|
root: string;
|
|
28
28
|
paths: readonly string[];
|
|
@@ -35,9 +35,11 @@ export type HouseAuthority = LogPosition & {
|
|
|
35
35
|
houseModel: HouseModel | null;
|
|
36
36
|
managedReplication: 'admitted' | 'unavailable';
|
|
37
37
|
protectedPaths: readonly string[];
|
|
38
|
+
read: HouseReadLevel;
|
|
38
39
|
operations: HouseOperations;
|
|
39
40
|
};
|
|
40
41
|
export type HouseDiscoveryDocument = {
|
|
42
|
+
member: Member;
|
|
41
43
|
bounds: HouseBounds;
|
|
42
44
|
authorities: readonly HouseAuthority[];
|
|
43
45
|
actions: readonly string[];
|
|
@@ -62,11 +64,10 @@ export type HouseSiteDiscovery = {
|
|
|
62
64
|
export declare function parseDiscovery(body: unknown): HouseDiscoveryDocument | null;
|
|
63
65
|
export declare function parseSiteDiscovery(body: unknown): HouseSiteDiscovery | null;
|
|
64
66
|
export declare function siteTracked(document: HouseSiteDiscovery): TrackedAuthority[];
|
|
65
|
-
export declare function locatorOf(authority: HouseAuthority): string;
|
|
66
67
|
export declare function trackedFrom(document: HouseDiscoveryDocument): TrackedAuthority[];
|
|
67
68
|
export declare function providerLimits(bounds: HouseBounds): readonly ProviderLimit[];
|
|
68
69
|
export declare function declaredRetention(bounds: HouseBounds): Retention;
|
|
69
|
-
export declare function capabilities(actions: readonly
|
|
70
|
+
export declare function capabilities(actions: HouseDiscoveryDocument['actions'], rooms: readonly Pick<TrackedAuthority, 'authority' | 'houseModel'>[]): readonly Capability[];
|
|
70
71
|
export declare function siteCapabilities(): readonly Capability[];
|
|
71
72
|
export declare function discoveredRoom(authority: HouseAuthority): DiscoveredRoom;
|
|
72
73
|
export declare function mapDiscovery(document: Pick<HouseDiscoveryDocument, 'bounds'>, rooms: readonly DiscoveredRoom[], declared: readonly Capability[]): Discovery;
|
package/dist/discovery.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,SAAS,EACT,aAAa,EACb,SAAS,EACV,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
|
package/dist/discovery.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { declaredActions,
|
|
2
|
-
import { PRIVATE_LOCATOR } from './transport.js';
|
|
1
|
+
import { declaredActions, houseConversationAgents, SITE_SUBMIT } from './actions.js';
|
|
3
2
|
import { readPosition, roomVersion } from './version.js';
|
|
4
3
|
export const PROVIDER_ACTIONS = 'provider-actions';
|
|
5
4
|
export const DISCOVER_PREFIXES = ['/'];
|
|
6
|
-
export const PRIVATE_HANDLE = 'private';
|
|
7
5
|
const BOUND_KEYS = [
|
|
8
6
|
'max_authored_file_bytes',
|
|
9
7
|
'max_batch_operations',
|
|
@@ -15,10 +13,12 @@ const BOUND_KEYS = [
|
|
|
15
13
|
'max_inline_body_bytes',
|
|
16
14
|
'max_upload_bytes',
|
|
17
15
|
'max_prefixes',
|
|
16
|
+
'max_held_files',
|
|
18
17
|
'change_retention_seconds',
|
|
19
18
|
'operation_retention_seconds',
|
|
20
19
|
];
|
|
21
|
-
const OPERATION_KEYS = ['
|
|
20
|
+
const OPERATION_KEYS = ['write', 'delete'];
|
|
21
|
+
const READ_LEVELS = ['mcp', 'online', 'local'];
|
|
22
22
|
function stringList(value) {
|
|
23
23
|
if (!Array.isArray(value))
|
|
24
24
|
return null;
|
|
@@ -35,6 +35,12 @@ function parseBounds(value) {
|
|
|
35
35
|
return null;
|
|
36
36
|
bounds[key] = amount;
|
|
37
37
|
}
|
|
38
|
+
const moves = held.max_move_documents;
|
|
39
|
+
if (moves !== undefined) {
|
|
40
|
+
if (typeof moves !== 'number' || !Number.isFinite(moves))
|
|
41
|
+
return null;
|
|
42
|
+
bounds.max_move_documents = moves;
|
|
43
|
+
}
|
|
38
44
|
return bounds;
|
|
39
45
|
}
|
|
40
46
|
function parseHouseModel(value) {
|
|
@@ -48,6 +54,14 @@ function parseHouseModel(value) {
|
|
|
48
54
|
return undefined;
|
|
49
55
|
return { root: held.root, paths };
|
|
50
56
|
}
|
|
57
|
+
function parseMember(value) {
|
|
58
|
+
if (typeof value !== 'object' || value === null)
|
|
59
|
+
return null;
|
|
60
|
+
const { user, name } = value;
|
|
61
|
+
if (typeof user !== 'string' || typeof name !== 'string')
|
|
62
|
+
return null;
|
|
63
|
+
return { kind: 'user', id: user, name };
|
|
64
|
+
}
|
|
51
65
|
function parseOperations(value) {
|
|
52
66
|
if (typeof value !== 'object' || value === null)
|
|
53
67
|
return null;
|
|
@@ -78,7 +92,12 @@ function parseAuthority(value) {
|
|
|
78
92
|
const houseModel = parseHouseModel(held.house_model);
|
|
79
93
|
const protectedPaths = stringList(held.protected_paths);
|
|
80
94
|
const operations = parseOperations(held.operations);
|
|
81
|
-
|
|
95
|
+
const read = READ_LEVELS.find((level) => level === held.read);
|
|
96
|
+
if (at === null ||
|
|
97
|
+
houseModel === undefined ||
|
|
98
|
+
protectedPaths === null ||
|
|
99
|
+
read === undefined ||
|
|
100
|
+
operations === null)
|
|
82
101
|
return null;
|
|
83
102
|
if (typeof held.room_ref !== 'string' || held.room_ref.length === 0)
|
|
84
103
|
return null;
|
|
@@ -92,6 +111,7 @@ function parseAuthority(value) {
|
|
|
92
111
|
houseModel,
|
|
93
112
|
managedReplication: held.managed_replication,
|
|
94
113
|
protectedPaths,
|
|
114
|
+
read,
|
|
95
115
|
operations,
|
|
96
116
|
...at,
|
|
97
117
|
};
|
|
@@ -100,6 +120,9 @@ export function parseDiscovery(body) {
|
|
|
100
120
|
if (typeof body !== 'object' || body === null)
|
|
101
121
|
return null;
|
|
102
122
|
const held = body;
|
|
123
|
+
const member = parseMember(held.member);
|
|
124
|
+
if (member === null)
|
|
125
|
+
return null;
|
|
103
126
|
const bounds = parseBounds(held.bounds);
|
|
104
127
|
if (bounds === null)
|
|
105
128
|
return null;
|
|
@@ -117,7 +140,7 @@ export function parseDiscovery(body) {
|
|
|
117
140
|
return null;
|
|
118
141
|
authorities.push(authority);
|
|
119
142
|
}
|
|
120
|
-
return { bounds, authorities, actions };
|
|
143
|
+
return { member, bounds, authorities, actions };
|
|
121
144
|
}
|
|
122
145
|
function parseSiteAuthority(value) {
|
|
123
146
|
if (typeof value !== 'object' || value === null)
|
|
@@ -171,9 +194,6 @@ export function siteTracked(document) {
|
|
|
171
194
|
logEpoch: authority.logEpoch,
|
|
172
195
|
}));
|
|
173
196
|
}
|
|
174
|
-
export function locatorOf(authority) {
|
|
175
|
-
return authority.roomHandle === PRIVATE_HANDLE ? PRIVATE_LOCATOR : authority.roomRef;
|
|
176
|
-
}
|
|
177
197
|
function schemasOf(authority) {
|
|
178
198
|
return authority.houseModel === null
|
|
179
199
|
? [authority.schema]
|
|
@@ -181,7 +201,7 @@ function schemasOf(authority) {
|
|
|
181
201
|
}
|
|
182
202
|
export function trackedFrom(document) {
|
|
183
203
|
return document.authorities.map((authority) => ({
|
|
184
|
-
locator:
|
|
204
|
+
locator: authority.roomRef,
|
|
185
205
|
authority: authority.roomRef,
|
|
186
206
|
handle: authority.roomHandle,
|
|
187
207
|
schema: authority.schema,
|
|
@@ -198,8 +218,11 @@ export function providerLimits(bounds) {
|
|
|
198
218
|
{ name: 'change-documents', value: bounds.max_batch_documents },
|
|
199
219
|
{ name: 'path-length', value: bounds.max_path_length },
|
|
200
220
|
{ name: 'path-depth', value: bounds.max_path_depth },
|
|
221
|
+
...(bounds.max_move_documents === undefined
|
|
222
|
+
? []
|
|
223
|
+
: [{ name: 'move-documents', value: bounds.max_move_documents }]),
|
|
201
224
|
{ name: 'write-rate' },
|
|
202
|
-
{ name: '
|
|
225
|
+
{ name: 'storage-limit' },
|
|
203
226
|
];
|
|
204
227
|
}
|
|
205
228
|
export function declaredRetention(bounds) {
|
|
@@ -209,33 +232,42 @@ export function declaredRetention(bounds) {
|
|
|
209
232
|
refreshHorizon: bounds.change_retention_seconds,
|
|
210
233
|
};
|
|
211
234
|
}
|
|
212
|
-
export function capabilities(actions) {
|
|
235
|
+
export function capabilities(actions, rooms) {
|
|
236
|
+
const house = rooms.find((room) => room.houseModel !== null);
|
|
213
237
|
return [
|
|
214
238
|
{
|
|
215
239
|
name: PROVIDER_ACTIONS,
|
|
216
240
|
actions: declaredActions(actions),
|
|
217
|
-
|
|
241
|
+
...(house === undefined
|
|
242
|
+
? {}
|
|
243
|
+
: { conversationAgents: houseConversationAgents(house.authority) }),
|
|
218
244
|
},
|
|
219
245
|
];
|
|
220
246
|
}
|
|
221
247
|
export function siteCapabilities() {
|
|
222
248
|
return [
|
|
223
|
-
{
|
|
249
|
+
{
|
|
250
|
+
name: PROVIDER_ACTIONS,
|
|
251
|
+
actions: [{ name: SITE_SUBMIT, inputShape: {}, resultKind: 'house' }],
|
|
252
|
+
},
|
|
224
253
|
];
|
|
225
254
|
}
|
|
226
255
|
export function discoveredRoom(authority) {
|
|
227
|
-
const locator =
|
|
256
|
+
const locator = authority.roomRef;
|
|
228
257
|
return {
|
|
229
258
|
name: authority.name,
|
|
230
259
|
locator,
|
|
260
|
+
handle: authority.roomHandle,
|
|
231
261
|
roomVersion: roomVersion(authority),
|
|
232
262
|
operations: {
|
|
233
|
-
read: [...authority.operations.read],
|
|
234
|
-
sync: [...authority.operations.sync],
|
|
235
263
|
write: [...authority.operations.write],
|
|
236
264
|
delete: [...authority.operations.delete],
|
|
237
265
|
},
|
|
238
|
-
replica: {
|
|
266
|
+
replica: {
|
|
267
|
+
selection: locator,
|
|
268
|
+
admission: authority.managedReplication,
|
|
269
|
+
offline: authority.read === 'online' ? 'locked' : 'open',
|
|
270
|
+
},
|
|
239
271
|
...(authority.houseModel === null
|
|
240
272
|
? {}
|
|
241
273
|
: { typedSelection: { roots: [...authority.houseModel.paths] } }),
|
package/dist/gather.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare function gatheredEach<A, R>(send: (asks: readonly A[], answer: (ask: number, result: R) => void) => Promise<void>): (ask: A) => Promise<R>;
|
|
1
2
|
export declare function gathered<A, R>(send: (asks: readonly A[]) => Promise<readonly R[]>): (ask: A) => Promise<R>;
|
|
2
|
-
export declare function selections<T>(items: readonly T[],
|
|
3
|
+
export declare function selections<T>(items: readonly T[], limit: number): readonly (readonly T[])[];
|
|
3
4
|
//# sourceMappingURL=gather.d.ts.map
|
package/dist/gather.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gather.d.ts","sourceRoot":"","sources":["../src/gather.ts"],"names":[],"mappings":"AAMA,wBAAgB,
|
|
1
|
+
{"version":3,"file":"gather.d.ts","sourceRoot":"","sources":["../src/gather.ts"],"names":[],"mappings":"AAMA,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAC/B,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,GACpF,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAwBxB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAC3B,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GAClD,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAMxB;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAO3F"}
|
package/dist/gather.js
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
export function
|
|
1
|
+
export function gatheredEach(send) {
|
|
2
2
|
let held = [];
|
|
3
3
|
function flush() {
|
|
4
4
|
const taken = held;
|
|
5
5
|
held = [];
|
|
6
|
-
send(taken.map((entry) => entry.ask)
|
|
7
|
-
taken
|
|
8
|
-
|
|
9
|
-
});
|
|
10
|
-
}, (reason) => {
|
|
6
|
+
send(taken.map((entry) => entry.ask), (ask, result) => {
|
|
7
|
+
taken[ask]?.resolve(result);
|
|
8
|
+
}).catch((reason) => {
|
|
11
9
|
for (const entry of taken)
|
|
12
10
|
entry.reject(reason);
|
|
13
11
|
});
|
|
@@ -20,21 +18,18 @@ export function gathered(send) {
|
|
|
20
18
|
held.push({ ask, resolve, reject });
|
|
21
19
|
});
|
|
22
20
|
}
|
|
23
|
-
export function
|
|
21
|
+
export function gathered(send) {
|
|
22
|
+
return gatheredEach(async (asks, answer) => {
|
|
23
|
+
(await send(asks)).forEach((result, ask) => {
|
|
24
|
+
answer(ask, result);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
export function selections(items, limit) {
|
|
29
|
+
const size = Math.max(1, limit);
|
|
24
30
|
const parts = [];
|
|
25
|
-
let
|
|
26
|
-
|
|
27
|
-
for (const item of items) {
|
|
28
|
-
const weighed = weight(item);
|
|
29
|
-
if (part.length > 0 && carried + weighed > limit) {
|
|
30
|
-
parts.push(part);
|
|
31
|
-
part = [];
|
|
32
|
-
carried = 0;
|
|
33
|
-
}
|
|
34
|
-
part.push(item);
|
|
35
|
-
carried += weighed;
|
|
31
|
+
for (let start = 0; start < items.length; start += size) {
|
|
32
|
+
parts.push(items.slice(start, start + size));
|
|
36
33
|
}
|
|
37
|
-
if (part.length > 0)
|
|
38
|
-
parts.push(part);
|
|
39
34
|
return parts;
|
|
40
35
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { createAgentsHouseAdapter, type AgentsHouseAdapterOptions } from './adapter.js';
|
|
2
|
-
export {
|
|
3
|
-
export
|
|
2
|
+
export { HOUSE_APP_ACTS, HOUSE_APP_BATCHES, HOUSE_SITE_ACTS } from './actions.js';
|
|
3
|
+
export { HOUSE_ROOM_TYPES, INBOX_CHANNEL_KINDS, INBOX_CHAT_TYPE, INBOX_MESSAGE_TYPE, type InboxChannelKind, } from './room-types.js';
|
|
4
|
+
export type { HouseByteAct, HouseByteTransfer, HouseBytesAnswer, HouseClosing, HouseDoorAnswer, HouseHeldRoom, HouseOpening, HouseStream, HouseStreamEntry, HouseStreamFrame, HouseSiteTransport, HouseTransport, } from './transport.js';
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,KAAK,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,KAAK,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,aAAa,EACb,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,GACf,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export { createAgentsHouseAdapter } from './adapter.js';
|
|
2
|
-
export {
|
|
2
|
+
export { HOUSE_APP_ACTS, HOUSE_APP_BATCHES, HOUSE_SITE_ACTS } from './actions.js';
|
|
3
|
+
export { HOUSE_ROOM_TYPES, INBOX_CHANNEL_KINDS, INBOX_CHAT_TYPE, INBOX_MESSAGE_TYPE, } from './room-types.js';
|
package/dist/model.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { RoomModels } from '@agentshouse/mdruntime';
|
|
|
2
2
|
import type { TrackedAuthority } from './discovery.js';
|
|
3
3
|
import { type HouseScope, type HouseView } from './read.js';
|
|
4
4
|
import type { HouseMode, HouseStreamEntry } from './transport.js';
|
|
5
|
-
export declare function
|
|
5
|
+
export declare function partModels(scope: HouseScope, tracked: TrackedAuthority, seen: ReadonlySet<string>, final: boolean): Promise<RoomModels | undefined>;
|
|
6
6
|
export declare function viewModels(view: HouseView, tracked: TrackedAuthority): Promise<RoomModels | undefined>;
|
|
7
7
|
export declare function streamedModels(schemas: ReadonlyMap<string, HouseStreamEntry>, tracked: TrackedAuthority, mode: HouseMode): Promise<RoomModels | undefined>;
|
|
8
8
|
//# sourceMappingURL=model.d.ts.map
|
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,EAA0C,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AACpG,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
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,EAA0C,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AACpG,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAoClE,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,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/model.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { sha256Hex } from './digest.js';
|
|
2
2
|
import { schemaOf, schemaPath } from './read.js';
|
|
3
3
|
const MODEL_ABSENT = { kind: 'model-unavailable', reason: 'not-readable' };
|
|
4
|
-
const ABSENT_SCHEMA = { schema: null, version: null };
|
|
4
|
+
const ABSENT_SCHEMA = { schema: null, version: null, revision: null };
|
|
5
5
|
async function heldModel(read, identity) {
|
|
6
6
|
if (read === null)
|
|
7
7
|
return MODEL_ABSENT;
|
|
8
8
|
const version = await sha256Hex(JSON.stringify(read.version));
|
|
9
|
-
return {
|
|
9
|
+
return {
|
|
10
|
+
kind: 'model',
|
|
11
|
+
snapshot: { identity, version, schema: read.schema, revision: read.revision },
|
|
12
|
+
};
|
|
10
13
|
}
|
|
11
14
|
async function modelsOf(tracked, read) {
|
|
12
15
|
const models = {};
|
|
@@ -23,8 +26,12 @@ async function modelsOf(tracked, read) {
|
|
|
23
26
|
}
|
|
24
27
|
return models.collection === undefined && models.selection === undefined ? undefined : models;
|
|
25
28
|
}
|
|
26
|
-
export function
|
|
27
|
-
return modelsOf(tracked, (schema) =>
|
|
29
|
+
export function partModels(scope, tracked, seen, final) {
|
|
30
|
+
return modelsOf(tracked, (schema) => {
|
|
31
|
+
if (scope.files.some((file) => file.path === schema))
|
|
32
|
+
return schemaOf(scope, schema);
|
|
33
|
+
return final && !seen.has(schema) ? ABSENT_SCHEMA : undefined;
|
|
34
|
+
});
|
|
28
35
|
}
|
|
29
36
|
export function viewModels(view, tracked) {
|
|
30
37
|
return modelsOf(tracked, (schema) => {
|
|
@@ -33,8 +40,13 @@ export function viewModels(view, tracked) {
|
|
|
33
40
|
return undefined;
|
|
34
41
|
if ('removed' in change)
|
|
35
42
|
return ABSENT_SCHEMA;
|
|
36
|
-
if ('content' in change)
|
|
37
|
-
return {
|
|
43
|
+
if ('content' in change) {
|
|
44
|
+
return {
|
|
45
|
+
schema: change.content,
|
|
46
|
+
version: change.version,
|
|
47
|
+
revision: change.revision ?? null,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
38
50
|
return null;
|
|
39
51
|
});
|
|
40
52
|
}
|
|
@@ -48,6 +60,8 @@ export function streamedModels(schemas, tracked, mode) {
|
|
|
48
60
|
if (entry.text === undefined)
|
|
49
61
|
return null;
|
|
50
62
|
const version = mode === 'site' ? entry.sha256 : entry.revision;
|
|
51
|
-
return version === undefined
|
|
63
|
+
return version === undefined
|
|
64
|
+
? null
|
|
65
|
+
: { schema: entry.text, version, revision: mode === 'site' ? null : version };
|
|
52
66
|
});
|
|
53
67
|
}
|
package/dist/part.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ScopedRefusal } from '@agentshouse/mdruntime';
|
|
2
|
+
export declare const PART_ATTEMPTS = 3;
|
|
3
|
+
export declare const PART_UNVERIFIED = "part_unverified";
|
|
4
|
+
export type HousePart = {
|
|
5
|
+
part: string;
|
|
6
|
+
bytes: number;
|
|
7
|
+
sha256: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function parsePart(value: unknown): HousePart | null;
|
|
10
|
+
export declare function checkedPayload(body: unknown, listed: HousePart): Promise<Uint8Array<ArrayBuffer> | null>;
|
|
11
|
+
export declare function gunzipped(payload: Uint8Array<ArrayBuffer>): Promise<string | null>;
|
|
12
|
+
export declare function unverifiedPart(locator: string): ScopedRefusal;
|
|
13
|
+
//# sourceMappingURL=part.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"part.d.ts","sourceRoot":"","sources":["../src/part.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAU5D,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,eAAO,MAAM,eAAe,oBAAoB,CAAC;AAEjD,MAAM,MAAM,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAO1D;AAoBD,wBAAsB,cAAc,CAClC,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAiBzC;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAS7D"}
|
package/dist/part.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
const PART_MAGIC = 0x48505431;
|
|
2
|
+
const PART_HEAD_BYTES = 8;
|
|
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
|
+
function hex(bytes) {
|
|
33
|
+
let text = '';
|
|
34
|
+
for (const byte of bytes)
|
|
35
|
+
text += byte.toString(16).padStart(2, '0');
|
|
36
|
+
return text;
|
|
37
|
+
}
|
|
38
|
+
export async function checkedPayload(body, listed) {
|
|
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;
|
|
47
|
+
if (frame.length < PART_HEAD_BYTES + PART_DIGEST_BYTES)
|
|
48
|
+
return null;
|
|
49
|
+
const view = new DataView(frame.buffer, frame.byteOffset, frame.byteLength);
|
|
50
|
+
if (view.getUint32(0) !== PART_MAGIC)
|
|
51
|
+
return null;
|
|
52
|
+
const length = view.getUint32(4);
|
|
53
|
+
if (PART_HEAD_BYTES + length + PART_DIGEST_BYTES !== frame.length)
|
|
54
|
+
return null;
|
|
55
|
+
const payload = frame.subarray(PART_HEAD_BYTES, PART_HEAD_BYTES + length);
|
|
56
|
+
const digest = hex(new Uint8Array(await crypto.subtle.digest('SHA-256', payload)));
|
|
57
|
+
if (digest !== listed.sha256 || hex(frame.subarray(PART_HEAD_BYTES + length)) !== digest) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
return payload;
|
|
61
|
+
}
|
|
62
|
+
export async function gunzipped(payload) {
|
|
63
|
+
try {
|
|
64
|
+
const stream = new Blob([payload]).stream().pipeThrough(new DecompressionStream('gzip'));
|
|
65
|
+
return await new Response(stream).text();
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export function unverifiedPart(locator) {
|
|
72
|
+
return {
|
|
73
|
+
kind: 'scoped-refusal',
|
|
74
|
+
locator,
|
|
75
|
+
scope: 'undisclosed',
|
|
76
|
+
code: PART_UNVERIFIED,
|
|
77
|
+
fields: {},
|
|
78
|
+
retryable: true,
|
|
79
|
+
};
|
|
80
|
+
}
|
package/dist/read.d.ts
CHANGED
|
@@ -1,13 +1,40 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type AdapterFailure, type BinaryFile, type BootstrapPage, type RefreshResult, type TransportUncertainty } from '@agentshouse/mdruntime';
|
|
2
2
|
import type { TrackedAuthority } from './discovery.js';
|
|
3
|
+
import { type HousePart } from './part.js';
|
|
3
4
|
import type { HouseMode } from './transport.js';
|
|
4
5
|
import { type LogPosition } from './version.js';
|
|
5
6
|
export type HeadChange = BootstrapPage['changes'][string];
|
|
7
|
+
export type Answered = {
|
|
8
|
+
readonly documents: Map<string, string>;
|
|
9
|
+
readonly revisions: Map<string, string>;
|
|
10
|
+
readonly fileIds: Map<string, string>;
|
|
11
|
+
readonly changes: Map<string, HeadChange>;
|
|
12
|
+
readonly binaryFiles: Map<string, BinaryFile>;
|
|
13
|
+
readonly removals: Set<string>;
|
|
14
|
+
readonly folders: Set<string>;
|
|
15
|
+
readonly folderRemovals: Set<string>;
|
|
16
|
+
};
|
|
17
|
+
export declare function answering(): Answered;
|
|
18
|
+
export declare function revised(answer: Answered, path: string, revision: string): void;
|
|
19
|
+
export declare function forgotten(answer: Answered, path: string): void;
|
|
20
|
+
export declare function folded(answer: Answered, path: string, removed: boolean): void;
|
|
21
|
+
export declare function answered(answer: Answered): Generator<number, {
|
|
22
|
+
documents: Readonly<Record<string, string>>;
|
|
23
|
+
revisions: Readonly<Record<string, string>>;
|
|
24
|
+
fileIds?: Readonly<Record<string, string>>;
|
|
25
|
+
changes: Readonly<Record<string, HeadChange>>;
|
|
26
|
+
binaryFiles: Readonly<Record<string, BinaryFile>>;
|
|
27
|
+
removals: readonly string[];
|
|
28
|
+
folders?: readonly string[];
|
|
29
|
+
folderRemovals?: readonly string[];
|
|
30
|
+
}, void>;
|
|
6
31
|
export type HouseManifestFile = {
|
|
7
32
|
path: string;
|
|
8
33
|
revision: string | undefined;
|
|
9
34
|
version: string;
|
|
35
|
+
sha256?: string;
|
|
10
36
|
head?: HeadChange;
|
|
37
|
+
binary?: BinaryFile;
|
|
11
38
|
};
|
|
12
39
|
export type HouseContent = {
|
|
13
40
|
path: string;
|
|
@@ -17,19 +44,26 @@ export type HouseScope = LogPosition & {
|
|
|
17
44
|
anchor: string;
|
|
18
45
|
files: readonly HouseManifestFile[];
|
|
19
46
|
contents: readonly HouseContent[];
|
|
20
|
-
|
|
47
|
+
folders?: readonly string[];
|
|
48
|
+
};
|
|
49
|
+
export type HouseRoomParts = LogPosition & {
|
|
50
|
+
anchor: string;
|
|
51
|
+
parts: readonly HousePart[];
|
|
21
52
|
};
|
|
22
|
-
export type
|
|
23
|
-
|
|
53
|
+
export type HouseParted = {
|
|
54
|
+
rooms: readonly HouseRoomParts[];
|
|
55
|
+
next?: string;
|
|
24
56
|
};
|
|
25
57
|
export type HouseGrant = {
|
|
26
|
-
method: 'GET';
|
|
27
|
-
url: string;
|
|
28
|
-
} | {
|
|
29
|
-
method: 'POST';
|
|
30
58
|
operation: string;
|
|
31
59
|
url: string;
|
|
32
60
|
};
|
|
61
|
+
export type HouseFileAddress = {
|
|
62
|
+
url: string;
|
|
63
|
+
name: string;
|
|
64
|
+
sha256: string;
|
|
65
|
+
mediaType: string;
|
|
66
|
+
};
|
|
33
67
|
export type HouseChange = {
|
|
34
68
|
path: string;
|
|
35
69
|
removed: true;
|
|
@@ -41,38 +75,56 @@ export type HouseChange = {
|
|
|
41
75
|
head?: HeadChange;
|
|
42
76
|
} | {
|
|
43
77
|
path: string;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
78
|
+
binary: BinaryFile;
|
|
79
|
+
revision: string | undefined;
|
|
80
|
+
version: string;
|
|
81
|
+
head?: HeadChange;
|
|
82
|
+
};
|
|
83
|
+
export type HousePage = {
|
|
84
|
+
after: string;
|
|
85
|
+
through: string;
|
|
86
|
+
read: number;
|
|
87
|
+
};
|
|
88
|
+
export type HouseFolder = {
|
|
89
|
+
path: string;
|
|
90
|
+
removed: boolean;
|
|
47
91
|
};
|
|
48
92
|
export type HouseView = LogPosition & {
|
|
49
93
|
authority: string;
|
|
50
94
|
changes: readonly HouseChange[];
|
|
51
|
-
|
|
95
|
+
folders?: readonly HouseFolder[];
|
|
96
|
+
next?: HousePage;
|
|
97
|
+
};
|
|
98
|
+
type PageFailure = AdapterFailure | {
|
|
99
|
+
kind: 'beyond-horizon';
|
|
52
100
|
};
|
|
53
101
|
export type HouseEnumeration = {
|
|
54
102
|
authorities: readonly HouseView[];
|
|
55
103
|
};
|
|
56
104
|
export declare function authorityRoot(handle: string): string;
|
|
57
|
-
export declare function contentPrefixes(tracked: TrackedAuthority): readonly string[];
|
|
58
105
|
export declare function schemaPath(handle: string, schema: string): string;
|
|
59
106
|
export declare function parseGrant(body: unknown): HouseGrant | null;
|
|
107
|
+
export declare function parseFileAddress(body: unknown): HouseFileAddress | null;
|
|
60
108
|
export declare function headChange(held: {
|
|
61
109
|
readonly author?: unknown;
|
|
62
110
|
readonly created_at?: unknown;
|
|
63
111
|
}): HeadChange | undefined | null;
|
|
64
|
-
export declare function
|
|
65
|
-
export declare function
|
|
66
|
-
export declare function
|
|
112
|
+
export declare function binaryFileOf(held: Readonly<Record<string, unknown>>): BinaryFile | undefined | null;
|
|
113
|
+
export declare function parseParted(body: unknown): HouseParted | null;
|
|
114
|
+
export declare function parseSiteParted(body: unknown): HouseRoomParts | null;
|
|
115
|
+
export declare function emptyScope(room: HouseRoomParts): HouseScope;
|
|
116
|
+
export declare function housePart(room: HouseRoomParts, body: unknown, listed: HousePart, mode: HouseMode): Promise<HouseScope | TransportUncertainty | null>;
|
|
67
117
|
export declare function parseEnumeration(body: unknown, mode: HouseMode): HouseEnumeration | null;
|
|
68
|
-
export declare function
|
|
69
|
-
export declare function
|
|
70
|
-
export declare function
|
|
118
|
+
export declare function wholeView(first: HouseView, more: (page: HousePage) => Promise<HouseView | PageFailure>): Promise<HouseView | PageFailure>;
|
|
119
|
+
export declare function advancedScope(scope: HouseScope, view: HouseView): Generator<number, HouseScope, void>;
|
|
120
|
+
export declare function bootstrapping(scope: HouseScope): Generator<number, BootstrapPage, void>;
|
|
71
121
|
export type HouseSchema = {
|
|
72
122
|
schema: string | null;
|
|
73
123
|
version: string | null;
|
|
124
|
+
revision: string | null;
|
|
74
125
|
};
|
|
75
126
|
export declare function schemaOf(scope: HouseScope, schema: string): HouseSchema | null;
|
|
76
127
|
export declare function viewOf(enumeration: HouseEnumeration, tracked: TrackedAuthority): HouseView | undefined;
|
|
77
|
-
export declare function refreshFrom(view: HouseView, fromRoomVersion: string): RefreshResult
|
|
128
|
+
export declare function refreshFrom(view: HouseView, fromRoomVersion: string): Promise<RefreshResult>;
|
|
129
|
+
export {};
|
|
78
130
|
//# sourceMappingURL=read.d.ts.map
|