@agentshouse/mdruntime-adapter 0.1.0-cc3d05e27ae63 → 0.1.0-cc710a8825617
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 +256 -272
- package/dist/actions.d.ts +23 -0
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +34 -30
- package/dist/adapter.d.ts +1 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +127 -34
- package/dist/discovery.d.ts +1 -0
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +6 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/model.d.ts +0 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +0 -3
- package/dist/read.d.ts +23 -1
- package/dist/read.d.ts.map +1 -1
- package/dist/read.js +90 -4
- package/dist/refusal.d.ts.map +1 -1
- package/dist/refusal.js +2 -1
- package/dist/site.d.ts +1 -1
- package/dist/site.d.ts.map +1 -1
- package/dist/site.js +125 -46
- package/dist/stream.d.ts +5 -4
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +289 -9
- package/dist/transport.d.ts +33 -4
- package/dist/transport.d.ts.map +1 -1
- package/dist/version.d.ts +1 -0
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/write.d.ts.map +1 -1
- package/dist/write.js +14 -9
- package/package.json +2 -3
package/dist/actions.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ export type AppInputs = {
|
|
|
24
24
|
readonly 'conversation.interrupt': ConversationControl;
|
|
25
25
|
readonly 'conversation.kill': ConversationControl;
|
|
26
26
|
readonly 'conversation.send': ConversationControl & {
|
|
27
|
+
readonly operation_id: string;
|
|
27
28
|
readonly text?: string;
|
|
28
29
|
readonly files?: readonly SentFile[];
|
|
29
30
|
};
|
|
@@ -32,11 +33,33 @@ export type AppAnswers = {
|
|
|
32
33
|
readonly 'conversation.history': ConversationHistories;
|
|
33
34
|
};
|
|
34
35
|
export type AppAnswerAdditions = {
|
|
36
|
+
readonly 'conversation.create': {
|
|
37
|
+
readonly conversation: string;
|
|
38
|
+
};
|
|
35
39
|
readonly 'conversation.send': {
|
|
36
40
|
readonly turn: string;
|
|
37
41
|
};
|
|
42
|
+
readonly 'record.list': {
|
|
43
|
+
readonly attachments: readonly {
|
|
44
|
+
readonly referrer: {
|
|
45
|
+
readonly room_ref: string;
|
|
46
|
+
readonly record: string;
|
|
47
|
+
};
|
|
48
|
+
}[];
|
|
49
|
+
readonly records: readonly {
|
|
50
|
+
readonly attachments: readonly {
|
|
51
|
+
readonly referrer: {
|
|
52
|
+
readonly room_ref: string;
|
|
53
|
+
readonly record: string;
|
|
54
|
+
};
|
|
55
|
+
}[];
|
|
56
|
+
}[];
|
|
57
|
+
};
|
|
38
58
|
};
|
|
39
59
|
export declare const HOUSE_APP_ACTS: Readonly<Record<string, string>>;
|
|
60
|
+
export declare const SITE_SUBMIT = "submit";
|
|
61
|
+
export declare const HOUSE_SITE_ACTS: Readonly<Record<string, string>>;
|
|
62
|
+
export declare const HOUSE_APP_BATCHES: Readonly<Partial<Record<string, readonly string[]>>>;
|
|
40
63
|
export declare function houseConversationAgents(locator: string): ConversationAgents;
|
|
41
64
|
export declare function declaredActions(routes: readonly string[]): readonly ActionDeclaration[];
|
|
42
65
|
export declare function houseAction(transport: HouseTransport, request: ActionRequest): Promise<ActionResult>;
|
package/dist/actions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAE1B,KAAK,0BAA0B,EAC/B,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAQtE,KAAK,QAAQ,GAAG;IAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,KAAK,mBAAmB,GAAG,QAAQ,GAAG;IAAE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,KAAK,QAAQ,GAAG,eAAe,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAE1D,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,qBAAqB,EAAE,mBAAmB,GAAG;QACpD,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;SAAE,CAAC;KAClF,CAAC;IACF,QAAQ,CAAC,qBAAqB,EAAE,QAAQ,GAAG;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACzE,QAAQ,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;IACpD,QAAQ,CAAC,sBAAsB,EAAE,0BAA0B,CAAC;IAC5D,QAAQ,CAAC,wBAAwB,EAAE,mBAAmB,CAAC;IACvD,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAClD,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,GAAG;QAClD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;KACtC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,sBAAsB,EAAE,qBAAqB,CAAC;CACxD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,mBAAmB,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
|
package/dist/actions.js
CHANGED
|
@@ -11,9 +11,10 @@ function mapped(door, input = (given) => given) {
|
|
|
11
11
|
},
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
|
-
function carried(door, carry) {
|
|
14
|
+
function carried(door, carry, batched) {
|
|
15
15
|
return {
|
|
16
16
|
door,
|
|
17
|
+
...(batched === undefined ? {} : { batched }),
|
|
17
18
|
carry: (transport, input, name) => carry(transport, `/door/${door}`, input, name),
|
|
18
19
|
};
|
|
19
20
|
}
|
|
@@ -22,7 +23,7 @@ const APP_ACTS = {
|
|
|
22
23
|
'conversation.answer': mapped('conversations/interaction/answer', answerBody),
|
|
23
24
|
'conversation.create': carried('conversations/create', createAction),
|
|
24
25
|
'conversation.delete': mapped('conversations/delete', controlBody),
|
|
25
|
-
'conversation.history': carried('conversations/history', historyAction),
|
|
26
|
+
'conversation.history': carried('conversations/history', historyAction, ['conversations']),
|
|
26
27
|
'conversation.interrupt': mapped('conversations/interrupt', controlBody),
|
|
27
28
|
'conversation.kill': mapped('conversations/kill', controlBody),
|
|
28
29
|
'conversation.markDone': mapped('conversations/done'),
|
|
@@ -46,6 +47,11 @@ const APP_ACTS = {
|
|
|
46
47
|
'triggerOccurrence.list': mapped('triggers/fired'),
|
|
47
48
|
};
|
|
48
49
|
export const HOUSE_APP_ACTS = Object.fromEntries(Object.entries(APP_ACTS).map(([name, act]) => [name, act.door]));
|
|
50
|
+
export const SITE_SUBMIT = 'submit';
|
|
51
|
+
export const HOUSE_SITE_ACTS = {
|
|
52
|
+
[SITE_SUBMIT]: 'site/submission',
|
|
53
|
+
};
|
|
54
|
+
export const HOUSE_APP_BATCHES = Object.fromEntries(Object.entries(APP_ACTS).flatMap(([name, act]) => act.batched === undefined ? [] : [[name, act.batched]]));
|
|
49
55
|
const APP_NAMES = new Map(Object.entries(APP_ACTS).map(([name, act]) => [act.door, name]));
|
|
50
56
|
export function houseConversationAgents(locator) {
|
|
51
57
|
return { locator, type: 'house-agent', identity: 'agent', name: 'name', retired: 'retired' };
|
|
@@ -116,7 +122,12 @@ async function createAction(transport, route, input, name) {
|
|
|
116
122
|
return outcome;
|
|
117
123
|
const held = record(outcome.result);
|
|
118
124
|
const conversation = text(held, 'conversation_id');
|
|
119
|
-
return conversation === undefined
|
|
125
|
+
return conversation === undefined
|
|
126
|
+
? outcome
|
|
127
|
+
: {
|
|
128
|
+
...outcome,
|
|
129
|
+
result: { ...held, conversation },
|
|
130
|
+
};
|
|
120
131
|
}
|
|
121
132
|
function withTurn(body) {
|
|
122
133
|
const held = record(body);
|
|
@@ -141,7 +152,10 @@ function referredRecord(view, roomRef) {
|
|
|
141
152
|
const held = record(view);
|
|
142
153
|
if (roomRef === undefined || typeof held.record !== 'string' || !Array.isArray(held.attachments))
|
|
143
154
|
return view;
|
|
144
|
-
const referrer = {
|
|
155
|
+
const referrer = {
|
|
156
|
+
room_ref: roomRef,
|
|
157
|
+
record: held.record,
|
|
158
|
+
};
|
|
145
159
|
return {
|
|
146
160
|
...held,
|
|
147
161
|
attachments: held.attachments.map((attachment) => ({ ...record(attachment), referrer })),
|
|
@@ -200,12 +214,13 @@ function sendFiles(input) {
|
|
|
200
214
|
}
|
|
201
215
|
function sendBody(input) {
|
|
202
216
|
const files = sendFiles(input);
|
|
203
|
-
|
|
217
|
+
const operation = text(input, 'operation_id');
|
|
218
|
+
if (files === null || operation === undefined)
|
|
204
219
|
return null;
|
|
205
220
|
const textValue = text(input, 'text');
|
|
206
221
|
return {
|
|
207
222
|
conversation_id: text(input, 'conversation'),
|
|
208
|
-
operation_id:
|
|
223
|
+
operation_id: operation,
|
|
209
224
|
...(textValue !== undefined && textValue.length > 0 ? { text: textValue } : {}),
|
|
210
225
|
...(files.length === 0 ? {} : { files }),
|
|
211
226
|
};
|
|
@@ -218,9 +233,6 @@ async function fileBytes(file) {
|
|
|
218
233
|
return null;
|
|
219
234
|
return new Uint8Array(await blob.arrayBuffer());
|
|
220
235
|
}
|
|
221
|
-
function delivered(answer, name) {
|
|
222
|
-
return answer.status === 200 ? null : actionOutcome(answer, name);
|
|
223
|
-
}
|
|
224
236
|
function uploadGrant(entry) {
|
|
225
237
|
if (!('upload' in record(entry)))
|
|
226
238
|
return 'absent';
|
|
@@ -231,36 +243,28 @@ function uploadGrant(entry) {
|
|
|
231
243
|
return null;
|
|
232
244
|
return { method: 'POST', operation: upload.operation, url: upload.url };
|
|
233
245
|
}
|
|
234
|
-
async function uploadFiles(transport, input, result
|
|
246
|
+
async function uploadFiles(transport, input, result) {
|
|
235
247
|
const sent = record(result).files;
|
|
236
|
-
if (!Array.isArray(sent)
|
|
237
|
-
return
|
|
248
|
+
if (!Array.isArray(sent))
|
|
249
|
+
return true;
|
|
238
250
|
const files = Array.isArray(record(input).files) ? record(input).files : [];
|
|
239
251
|
for (const [index, entry] of sent.entries()) {
|
|
240
252
|
const grant = uploadGrant(entry);
|
|
241
253
|
if (grant === 'absent')
|
|
242
254
|
continue;
|
|
243
|
-
if (grant === null)
|
|
244
|
-
return malformed();
|
|
245
255
|
const bytes = index < files.length ? await fileBytes(files[index]) : null;
|
|
246
|
-
if (bytes === null)
|
|
247
|
-
return
|
|
248
|
-
|
|
249
|
-
code: 'conversation_file_descriptor_required',
|
|
250
|
-
fields: {},
|
|
251
|
-
retryable: false,
|
|
252
|
-
};
|
|
253
|
-
}
|
|
254
|
-
const failed = delivered(await transport.transfer({
|
|
256
|
+
if (grant === null || bytes === null)
|
|
257
|
+
return false;
|
|
258
|
+
const answer = await transport.transfer({
|
|
255
259
|
act: 'conversation_file_upload',
|
|
256
260
|
url: grant.url,
|
|
257
261
|
body: bytes,
|
|
258
262
|
operation: grant.operation,
|
|
259
|
-
})
|
|
260
|
-
if (
|
|
261
|
-
return
|
|
263
|
+
});
|
|
264
|
+
if (answer.status !== 200)
|
|
265
|
+
return false;
|
|
262
266
|
}
|
|
263
|
-
return
|
|
267
|
+
return true;
|
|
264
268
|
}
|
|
265
269
|
async function sendAction(transport, route, input, name) {
|
|
266
270
|
const body = sendBody(input);
|
|
@@ -269,9 +273,9 @@ async function sendAction(transport, route, input, name) {
|
|
|
269
273
|
const outcome = actionOutcome(await transport.door(route, body), name);
|
|
270
274
|
if (outcome.kind !== 'action')
|
|
271
275
|
return outcome;
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
276
|
+
if (!(await uploadFiles(transport, input, outcome.result))) {
|
|
277
|
+
return { kind: 'transport-uncertainty' };
|
|
278
|
+
}
|
|
275
279
|
return { ...outcome, result: withTurn(outcome.result) };
|
|
276
280
|
}
|
|
277
281
|
function historyCursor(value) {
|
package/dist/adapter.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export type AgentsHouseAdapterOptions = {
|
|
|
5
5
|
authorize(): Promise<Authorization>;
|
|
6
6
|
} | {
|
|
7
7
|
site: HouseSiteTransport;
|
|
8
|
+
snapshot?: boolean;
|
|
8
9
|
};
|
|
9
10
|
export declare function createAgentsHouseAdapter(options: AgentsHouseAdapterOptions): Adapter;
|
|
10
11
|
//# sourceMappingURL=adapter.d.ts.map
|
package/dist/adapter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,OAAO,EACP,aAAa,EAiBd,MAAM,wBAAwB,CAAC;AA4ChC,OAAO,EASL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAC;AAyBxB,MAAM,MAAM,yBAAyB,GACjC;IACE,SAAS,EAAE,cAAc,CAAC;IAC1B,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;CACrC,GACD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAsErD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CA0hBpF"}
|
package/dist/adapter.js
CHANGED
|
@@ -2,7 +2,8 @@ import { DISCOVER_PREFIXES, capabilities, discoveredRoom, mapDiscovery, parseDis
|
|
|
2
2
|
import { partModels, streamedModels, viewModels } from './model.js';
|
|
3
3
|
import { gathered, gatheredEach, selections } from './gather.js';
|
|
4
4
|
import { createSiteAdapter } from './site.js';
|
|
5
|
-
import { bootstrapOf, contentPrefixes, matchesScope, parseEnumeration, parseEnvelope, parseGrant, refreshFrom, viewOf, } from './read.js';
|
|
5
|
+
import { bootstrapOf, contentPrefixes, matchesScope, parseEnumeration, parseEnvelope, parseGrant, refreshFrom, viewOf, wholeView, } from './read.js';
|
|
6
|
+
import { sha256Hex } from './digest.js';
|
|
6
7
|
import { acceptedHanded, enumeratedHanded, heldHanded, scopeHanded, streamedHanded, } from './handed.js';
|
|
7
8
|
import { houseAction } from './actions.js';
|
|
8
9
|
import { classifyDoor, classifyRead, discoveryFailure, doorRefusal } from './refusal.js';
|
|
@@ -16,9 +17,36 @@ const UNCERTAIN_READ = { kind: 'transport-uncertainty' };
|
|
|
16
17
|
function lapsedGrant(outcome) {
|
|
17
18
|
return outcome.kind === 'rejected' && outcome.code === 'upload_unavailable';
|
|
18
19
|
}
|
|
20
|
+
function heldFiles(authority, held, after, budget) {
|
|
21
|
+
if (held === undefined || budget === 0)
|
|
22
|
+
return null;
|
|
23
|
+
const paths = Object.keys(held.revisions)
|
|
24
|
+
.filter((path) => held.documents[path] !== undefined && (after === null || path > after))
|
|
25
|
+
.sort();
|
|
26
|
+
if (paths.length === 0)
|
|
27
|
+
return null;
|
|
28
|
+
const files = paths.slice(0, budget).map((path) => ({ path, revision: held.revisions[path] }));
|
|
29
|
+
return { room: authority, through: paths.length > budget ? files.at(-1).path : null, files };
|
|
30
|
+
}
|
|
31
|
+
async function reused(scope, held) {
|
|
32
|
+
const sent = new Set(scope.contents.map((entry) => entry.path));
|
|
33
|
+
const contents = [...scope.contents];
|
|
34
|
+
for (const file of scope.files) {
|
|
35
|
+
if (file.binary !== undefined || sent.has(file.path))
|
|
36
|
+
continue;
|
|
37
|
+
const content = held?.documents[file.path];
|
|
38
|
+
if (content === undefined ||
|
|
39
|
+
held?.revisions[file.path] !== file.revision ||
|
|
40
|
+
(await sha256Hex(content)) !== file.sha256) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
contents.push({ path: file.path, content });
|
|
44
|
+
}
|
|
45
|
+
return { ...scope, contents };
|
|
46
|
+
}
|
|
19
47
|
export function createAgentsHouseAdapter(options) {
|
|
20
48
|
if ('site' in options)
|
|
21
|
-
return createSiteAdapter(options.site);
|
|
49
|
+
return createSiteAdapter(options.site, options.snapshot === true);
|
|
22
50
|
const transport = options.transport;
|
|
23
51
|
const notifications = houseNotifications(transport, 'credential');
|
|
24
52
|
const tracked = new Map();
|
|
@@ -29,10 +57,20 @@ export function createAgentsHouseAdapter(options) {
|
|
|
29
57
|
throw new Error('no Discovery declared the bounds');
|
|
30
58
|
return bounds;
|
|
31
59
|
}
|
|
32
|
-
async function bootstrappedRoom(envelope,
|
|
33
|
-
|
|
60
|
+
async function bootstrappedRoom(envelope, sent, asked, continued) {
|
|
61
|
+
const { entry } = asked;
|
|
62
|
+
if (sent === undefined)
|
|
34
63
|
return { kind: 'room-not-readable', locator: entry.locator };
|
|
35
|
-
const
|
|
64
|
+
const scope = await reused(sent, asked.held);
|
|
65
|
+
if (scope === null) {
|
|
66
|
+
return asked.held === undefined
|
|
67
|
+
? UNCERTAIN_READ
|
|
68
|
+
: continued === null
|
|
69
|
+
? bootstrapTogether({ entry, held: undefined })
|
|
70
|
+
: continuedBootstrap({ entry, held: undefined }, continued);
|
|
71
|
+
}
|
|
72
|
+
const cursor = envelope.next?.room === entry.authority ? envelope.next : undefined;
|
|
73
|
+
const next = cursor?.path ?? null;
|
|
36
74
|
if (continued === null && next === null)
|
|
37
75
|
handed.set(entry.locator, scopeHanded(scope));
|
|
38
76
|
else
|
|
@@ -43,17 +81,40 @@ export function createAgentsHouseAdapter(options) {
|
|
|
43
81
|
...entry.schemas.filter((schema) => scope.files.some((file) => file.path === schema)),
|
|
44
82
|
];
|
|
45
83
|
const models = await partModels(scope, entry, new Set(seen), next === null);
|
|
46
|
-
const continuation = next === null
|
|
84
|
+
const continuation = next === null
|
|
85
|
+
? null
|
|
86
|
+
: { after: next, seen, ...(cursor?.cut === undefined ? {} : { cut: cursor.cut }) };
|
|
47
87
|
return {
|
|
48
88
|
...bootstrapOf(scope),
|
|
49
89
|
...(models === undefined ? {} : { models }),
|
|
50
90
|
...(continuation === null ? {} : { pageToken: JSON.stringify(continuation) }),
|
|
51
91
|
};
|
|
52
92
|
}
|
|
93
|
+
async function enumeratedPage(ask, page) {
|
|
94
|
+
const answer = await transport.door(DOOR_ENUMERATE, {
|
|
95
|
+
prefixes: contentPrefixes(ask.entry),
|
|
96
|
+
positions: [
|
|
97
|
+
{
|
|
98
|
+
...presented(ask.entry.authority, { position: page.after, logEpoch: ask.from.logEpoch }),
|
|
99
|
+
page: { through: page.through, read: page.read },
|
|
100
|
+
},
|
|
101
|
+
],
|
|
102
|
+
});
|
|
103
|
+
const failure = classifyRead(answer.status, answer.body, ask.entry.locator);
|
|
104
|
+
if (failure !== null)
|
|
105
|
+
return failure;
|
|
106
|
+
const enumeration = parseEnumeration(answer.body, 'credential');
|
|
107
|
+
if (enumeration === null)
|
|
108
|
+
return UNCERTAIN_READ;
|
|
109
|
+
return (viewOf(enumeration, ask.entry) ?? { kind: 'room-not-readable', locator: ask.entry.locator });
|
|
110
|
+
}
|
|
53
111
|
async function enumeratedRoom(enumeration, ask) {
|
|
54
|
-
const
|
|
55
|
-
if (
|
|
112
|
+
const first = viewOf(enumeration, ask.entry);
|
|
113
|
+
if (first === undefined)
|
|
56
114
|
return { kind: 'room-not-readable', locator: ask.entry.locator };
|
|
115
|
+
const view = await wholeView(first, (page) => enumeratedPage(ask, page));
|
|
116
|
+
if ('kind' in view)
|
|
117
|
+
return view;
|
|
57
118
|
notifications.reach(ask.entry.authority, view);
|
|
58
119
|
const answer = refreshFrom(view, ask.fromRoomVersion);
|
|
59
120
|
if (answer.kind !== 'net-advancement')
|
|
@@ -73,7 +134,7 @@ export function createAgentsHouseAdapter(options) {
|
|
|
73
134
|
const models = await streamedModels(advanced.schemas, entry, 'credential');
|
|
74
135
|
return models === undefined ? advanced.page : { ...advanced.page, models };
|
|
75
136
|
}
|
|
76
|
-
function held(rooms) {
|
|
137
|
+
function held(rooms, demand) {
|
|
77
138
|
const kept = rooms.flatMap((room) => {
|
|
78
139
|
const entry = tracked.get(room.locator);
|
|
79
140
|
const at = logPosition(room.roomVersion);
|
|
@@ -83,7 +144,15 @@ export function createAgentsHouseAdapter(options) {
|
|
|
83
144
|
notifications.reach(entry.authority, at);
|
|
84
145
|
return [presented(entry.authority, at)];
|
|
85
146
|
});
|
|
86
|
-
notifications.send(kept
|
|
147
|
+
notifications.send(kept, demand === null
|
|
148
|
+
? null
|
|
149
|
+
: {
|
|
150
|
+
rooms: demand.rooms.flatMap((locator) => {
|
|
151
|
+
const entry = tracked.get(locator);
|
|
152
|
+
return entry === undefined ? [] : [entry.authority];
|
|
153
|
+
}),
|
|
154
|
+
conversations: demand.conversations,
|
|
155
|
+
});
|
|
87
156
|
}
|
|
88
157
|
function adopted(entry, outcome) {
|
|
89
158
|
if (outcome.kind !== 'accepted')
|
|
@@ -118,13 +187,19 @@ export function createAgentsHouseAdapter(options) {
|
|
|
118
187
|
function weight(entry) {
|
|
119
188
|
return contentPrefixes(entry).length;
|
|
120
189
|
}
|
|
121
|
-
|
|
122
|
-
|
|
190
|
+
function holding(asks, after) {
|
|
191
|
+
const budget = Math.floor(declared().max_held_files / Math.max(1, asks.filter((ask) => ask.held !== undefined).length));
|
|
192
|
+
return asks.flatMap((ask) => heldFiles(ask.entry.authority, ask.held, after, budget) ?? []);
|
|
193
|
+
}
|
|
194
|
+
async function bootstrapped(asks, answer) {
|
|
195
|
+
let open = asks.map((asked, ask) => ({ entry: asked.entry, asked, ask }));
|
|
123
196
|
while (open.length > 0) {
|
|
124
197
|
const unreached = [];
|
|
125
198
|
for (const part of selections(open, ({ entry }) => weight(entry), declared().max_prefixes)) {
|
|
199
|
+
const held = holding(part.map(({ asked }) => asked), null);
|
|
126
200
|
const answered = await transport.door(DOOR_BOOTSTRAP, {
|
|
127
201
|
prefixes: part.flatMap(({ entry }) => contentPrefixes(entry)),
|
|
202
|
+
...(held.length === 0 ? {} : { held }),
|
|
128
203
|
});
|
|
129
204
|
const classified = part.map(({ entry }) => classifyDoor(answered.status, answered.body, entry.locator));
|
|
130
205
|
const envelope = classified[0] === null ? parseEnvelope(answered.body) : null;
|
|
@@ -143,71 +218,79 @@ export function createAgentsHouseAdapter(options) {
|
|
|
143
218
|
unreached.push(asked);
|
|
144
219
|
continue;
|
|
145
220
|
}
|
|
146
|
-
answer(asked.ask, await bootstrappedRoom(envelope, scope, asked.
|
|
221
|
+
answer(asked.ask, await bootstrappedRoom(envelope, scope, asked.asked, null));
|
|
147
222
|
}
|
|
148
223
|
}
|
|
149
224
|
open = unreached;
|
|
150
225
|
}
|
|
151
226
|
}
|
|
152
|
-
async function continuedBootstrap(
|
|
153
|
-
const
|
|
227
|
+
async function continuedBootstrap(asked, continued) {
|
|
228
|
+
const { entry } = asked;
|
|
229
|
+
const after = {
|
|
230
|
+
room: entry.authority,
|
|
231
|
+
path: continued.after,
|
|
232
|
+
...(continued.cut === undefined ? {} : { cut: continued.cut }),
|
|
233
|
+
};
|
|
234
|
+
const held = holding([asked], continued.after);
|
|
154
235
|
const answered = await transport.door(DOOR_BOOTSTRAP, {
|
|
155
236
|
prefixes: contentPrefixes(entry),
|
|
156
237
|
after,
|
|
238
|
+
...(held.length === 0 ? {} : { held }),
|
|
157
239
|
});
|
|
158
|
-
const failure =
|
|
240
|
+
const failure = classifyRead(answered.status, answered.body, entry.locator);
|
|
159
241
|
if (failure !== null)
|
|
160
242
|
return failure;
|
|
161
243
|
const envelope = parseEnvelope(answered.body);
|
|
162
244
|
if (envelope === null)
|
|
163
245
|
return UNCERTAIN_READ;
|
|
164
246
|
const scope = envelope.scopes.find((candidate) => matchesScope(candidate, entry));
|
|
165
|
-
return bootstrappedRoom(envelope, scope,
|
|
247
|
+
return bootstrappedRoom(envelope, scope, asked, continued);
|
|
166
248
|
}
|
|
167
249
|
function layered(asks) {
|
|
168
250
|
const depths = new Map();
|
|
169
251
|
const layers = [];
|
|
170
252
|
for (const ask of asks) {
|
|
171
|
-
const depth = depths.get(ask.entry.authority) ?? 0;
|
|
172
|
-
depths.set(ask.entry.authority, depth + 1);
|
|
253
|
+
const depth = depths.get(ask.ask.entry.authority) ?? 0;
|
|
254
|
+
depths.set(ask.ask.entry.authority, depth + 1);
|
|
173
255
|
(layers[depth] ??= []).push(ask);
|
|
174
256
|
}
|
|
175
257
|
return layers;
|
|
176
258
|
}
|
|
177
259
|
async function enumerated(asks) {
|
|
178
|
-
const answers =
|
|
179
|
-
const parts = layered(asks).flatMap((layer) => selections(layer, (ask) => weight(ask.entry), declared().max_prefixes));
|
|
260
|
+
const answers = [];
|
|
261
|
+
const parts = layered(asks.map((ask, index) => ({ ask, index }))).flatMap((layer) => selections(layer, ({ ask }) => weight(ask.entry), declared().max_prefixes));
|
|
180
262
|
for (const part of parts) {
|
|
181
263
|
let open = [...part];
|
|
182
264
|
while (open.length > 0) {
|
|
183
265
|
const answer = await transport.door(DOOR_ENUMERATE, {
|
|
184
|
-
prefixes: open.flatMap((ask) => contentPrefixes(ask.entry)),
|
|
185
|
-
positions: open.map((ask) => presented(ask.entry.authority, ask.from)),
|
|
266
|
+
prefixes: open.flatMap(({ ask }) => contentPrefixes(ask.entry)),
|
|
267
|
+
positions: open.map(({ ask }) => presented(ask.entry.authority, ask.from)),
|
|
186
268
|
});
|
|
187
|
-
const classified = open.map((ask) => classifyRead(answer.status, answer.body, ask.entry.locator));
|
|
269
|
+
const classified = open.map(({ ask }) => classifyRead(answer.status, answer.body, ask.entry.locator));
|
|
188
270
|
if (classified[0]?.kind === 'beyond-horizon') {
|
|
189
271
|
const named = doorRefusal(answer.body)?.fields.authority;
|
|
190
|
-
const expired = open.filter((ask) => ask.entry.authority === named);
|
|
272
|
+
const expired = open.filter(({ ask }) => ask.entry.authority === named);
|
|
191
273
|
const answered = expired.length === 0 ? UNCERTAIN_READ : { kind: 'beyond-horizon' };
|
|
192
274
|
const gone = expired.length === 0 ? open : expired;
|
|
193
275
|
for (const ask of gone)
|
|
194
|
-
answers.
|
|
276
|
+
answers[ask.index] = answered;
|
|
195
277
|
open = open.filter((ask) => !gone.includes(ask));
|
|
196
278
|
continue;
|
|
197
279
|
}
|
|
198
280
|
const enumeration = classified[0] === null ? parseEnumeration(answer.body, 'credential') : null;
|
|
199
|
-
for (const [
|
|
200
|
-
const failure = classified[
|
|
281
|
+
for (const [answerIndex, { ask, index }] of open.entries()) {
|
|
282
|
+
const failure = classified[answerIndex];
|
|
201
283
|
if (failure !== null && failure !== undefined) {
|
|
202
|
-
answers
|
|
284
|
+
answers[index] = failure;
|
|
203
285
|
continue;
|
|
204
286
|
}
|
|
205
|
-
answers
|
|
287
|
+
answers[index] =
|
|
288
|
+
enumeration === null ? UNCERTAIN_READ : await enumeratedRoom(enumeration, ask);
|
|
206
289
|
}
|
|
207
290
|
open = [];
|
|
208
291
|
}
|
|
209
292
|
}
|
|
210
|
-
return
|
|
293
|
+
return answers;
|
|
211
294
|
}
|
|
212
295
|
const bootstrapTogether = gatheredEach(bootstrapped);
|
|
213
296
|
const enumerateTogether = gathered(enumerated);
|
|
@@ -327,10 +410,11 @@ export function createAgentsHouseAdapter(options) {
|
|
|
327
410
|
const entry = authorityFor(request.locator);
|
|
328
411
|
if (entry === undefined)
|
|
329
412
|
return { kind: 'room-not-readable', locator: request.locator };
|
|
413
|
+
const asked = { entry, held: request.held };
|
|
330
414
|
if (request.pageToken !== undefined) {
|
|
331
|
-
return continuedBootstrap(
|
|
415
|
+
return continuedBootstrap(asked, JSON.parse(request.pageToken));
|
|
332
416
|
}
|
|
333
|
-
return bootstrapTogether(
|
|
417
|
+
return bootstrapTogether(asked);
|
|
334
418
|
},
|
|
335
419
|
async refresh(_authorization, request) {
|
|
336
420
|
const entry = authorityFor(request.locator);
|
|
@@ -418,7 +502,16 @@ export function createAgentsHouseAdapter(options) {
|
|
|
418
502
|
async action(_authorization, request) {
|
|
419
503
|
return withAt(await houseAction(transport, request));
|
|
420
504
|
},
|
|
421
|
-
roomStream: {
|
|
505
|
+
roomStream: {
|
|
506
|
+
hold: held,
|
|
507
|
+
reopen: notifications.reopen,
|
|
508
|
+
observe: notifications.observe,
|
|
509
|
+
published(locator, roomVersion) {
|
|
510
|
+
const at = logPosition(roomVersion);
|
|
511
|
+
if (at !== null)
|
|
512
|
+
notifications.published(locator, at);
|
|
513
|
+
},
|
|
514
|
+
},
|
|
422
515
|
conversations: notifications.conversations,
|
|
423
516
|
serviceMode: notifications.serviceMode,
|
|
424
517
|
};
|
package/dist/discovery.d.ts
CHANGED
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,MAAM,EACN,aAAa,EACb,SAAS,EACV,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAA6B,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3E,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAU,CAAC;AAE1D,MAAM,MAAM,WAAW,GAAG;IACxB,uBAAuB,EAAE,MAAM,CAAC;IAChC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB,EAAE,MAAM,CAAC;IACjC,2BAA2B,EAAE,MAAM,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,kBAAkB,EAAE,UAAU,GAAG,aAAa,CAAC;IAC/C,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,UAAU,EAAE,eAAe,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,SAAS,cAAc,EAAE,CAAC;IACvC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAC5C,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,4 +1,4 @@
|
|
|
1
|
-
import { declaredActions, houseConversationAgents } from './actions.js';
|
|
1
|
+
import { declaredActions, houseConversationAgents, SITE_SUBMIT } from './actions.js';
|
|
2
2
|
import { readPosition, roomVersion } from './version.js';
|
|
3
3
|
export const PROVIDER_ACTIONS = 'provider-actions';
|
|
4
4
|
export const DISCOVER_PREFIXES = ['/'];
|
|
@@ -13,6 +13,7 @@ const BOUND_KEYS = [
|
|
|
13
13
|
'max_inline_body_bytes',
|
|
14
14
|
'max_upload_bytes',
|
|
15
15
|
'max_prefixes',
|
|
16
|
+
'max_held_files',
|
|
16
17
|
'change_retention_seconds',
|
|
17
18
|
'operation_retention_seconds',
|
|
18
19
|
];
|
|
@@ -229,7 +230,10 @@ export function capabilities(document) {
|
|
|
229
230
|
}
|
|
230
231
|
export function siteCapabilities() {
|
|
231
232
|
return [
|
|
232
|
-
{
|
|
233
|
+
{
|
|
234
|
+
name: PROVIDER_ACTIONS,
|
|
235
|
+
actions: [{ name: SITE_SUBMIT, inputShape: {}, resultKind: 'house' }],
|
|
236
|
+
},
|
|
233
237
|
];
|
|
234
238
|
}
|
|
235
239
|
export function discoveredRoom(authority) {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { createAgentsHouseAdapter, type AgentsHouseAdapterOptions } from './adapter.js';
|
|
2
|
-
export { HOUSE_APP_ACTS } from './actions.js';
|
|
3
|
-
export type { HouseByteAct, HouseByteTransfer, HouseBytesAnswer, HouseDoorAnswer, HouseHeldRoom, HouseOpening, HouseStream, HouseStreamEntry, HouseStreamFrame, HouseSiteTransport, HouseTransport, } from './transport.js';
|
|
2
|
+
export { HOUSE_APP_ACTS, HOUSE_APP_BATCHES, HOUSE_SITE_ACTS } from './actions.js';
|
|
3
|
+
export type { HouseByteAct, HouseByteTransfer, HouseBytesAnswer, HouseDemand, HouseDoorAnswer, HouseHeldRoom, HouseOpening, HouseStream, HouseStreamEntry, HouseStreamFrame, HouseSiteTransport, HouseTransport, } from './transport.js';
|
|
4
4
|
//# 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,cAAc,EAAE,MAAM,cAAc,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,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,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,2 @@
|
|
|
1
1
|
export { createAgentsHouseAdapter } from './adapter.js';
|
|
2
|
-
export { HOUSE_APP_ACTS } from './actions.js';
|
|
2
|
+
export { HOUSE_APP_ACTS, HOUSE_APP_BATCHES, HOUSE_SITE_ACTS } from './actions.js';
|
package/dist/model.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ 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
5
|
export declare function partModels(scope: HouseScope, tracked: TrackedAuthority, seen: ReadonlySet<string>, final: boolean): Promise<RoomModels | undefined>;
|
|
6
|
-
export declare function scopeModels(scope: HouseScope, tracked: TrackedAuthority): Promise<RoomModels | undefined>;
|
|
7
6
|
export declare function viewModels(view: HouseView, tracked: TrackedAuthority): Promise<RoomModels | undefined>;
|
|
8
7
|
export declare function streamedModels(schemas: ReadonlyMap<string, HouseStreamEntry>, tracked: TrackedAuthority, mode: HouseMode): Promise<RoomModels | undefined>;
|
|
9
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;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,
|
|
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
|
@@ -33,9 +33,6 @@ export function partModels(scope, tracked, seen, final) {
|
|
|
33
33
|
return final && !seen.has(schema) ? ABSENT_SCHEMA : undefined;
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
|
-
export function scopeModels(scope, tracked) {
|
|
37
|
-
return partModels(scope, tracked, new Set(), true);
|
|
38
|
-
}
|
|
39
36
|
export function viewModels(view, tracked) {
|
|
40
37
|
return modelsOf(tracked, (schema) => {
|
|
41
38
|
const change = view.changes.find((candidate) => candidate.path === schema);
|