@agentshouse/mdruntime-adapter 0.1.0-cb89e0425af50 → 0.1.0-cbbc9b36e7fd4
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 -226
- package/dist/actions.d.ts +61 -1
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +80 -86
- package/dist/adapter.d.ts +1 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +229 -63
- package/dist/discovery.d.ts +1 -0
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +6 -2
- package/dist/handed.d.ts +15 -0
- package/dist/handed.d.ts.map +1 -0
- package/dist/handed.js +38 -0
- package/dist/index.d.ts +2 -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 +26 -7
- package/dist/read.d.ts.map +1 -1
- package/dist/read.js +136 -78
- package/dist/referrer.d.ts +7 -0
- package/dist/referrer.d.ts.map +1 -0
- package/dist/referrer.js +35 -0
- package/dist/refusal.d.ts.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 +157 -47
- package/dist/stream.d.ts +5 -4
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +300 -14
- package/dist/transport.d.ts +48 -10
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +3 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/write.d.ts +2 -9
- package/dist/write.d.ts.map +1 -1
- package/dist/write.js +59 -10
- package/package.json +2 -3
- package/dist/links.d.ts +0 -20
- package/dist/links.d.ts.map +0 -1
- package/dist/links.js +0 -104
package/dist/adapter.js
CHANGED
|
@@ -2,22 +2,51 @@ 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';
|
|
6
|
-
import {
|
|
5
|
+
import { bootstrapOf, contentPrefixes, matchesScope, parseEnumeration, parseEnvelope, parseGrant, refreshFrom, viewOf, wholeView, } from './read.js';
|
|
6
|
+
import { sha256Hex } from './digest.js';
|
|
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';
|
|
9
10
|
import { houseNotifications } from './stream.js';
|
|
10
|
-
import { DOOR_BATCH, DOOR_BATCH_UPLOAD, DOOR_BOOTSTRAP, DOOR_DISCOVER, DOOR_ENUMERATE, DOOR_REVISIONS, } from './transport.js';
|
|
11
|
+
import { DOOR_BATCH, DOOR_BATCH_UPLOAD, DOOR_BOOTSTRAP, DOOR_DISCOVER, DOOR_ENUMERATE, DOOR_FILES_GET, DOOR_REVISIONS, } from './transport.js';
|
|
11
12
|
import { batchPaths, deltaBody, deltaBytes, deltaDigest, historyOutcome, houseChanges, mutationOutcome, operationHead, rejectedMapping, revisionBody, uploadable, } from './write.js';
|
|
13
|
+
import { houseReferrer } from './referrer.js';
|
|
12
14
|
import { followsVersion, logPosition, presented, reachedVersion, roomVersion, } from './version.js';
|
|
13
15
|
const UNCERTAIN = { kind: 'transport-uncertainty' };
|
|
14
16
|
const UNCERTAIN_READ = { kind: 'transport-uncertainty' };
|
|
15
17
|
function lapsedGrant(outcome) {
|
|
16
18
|
return outcome.kind === 'rejected' && outcome.code === 'upload_unavailable';
|
|
17
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
|
+
}
|
|
18
47
|
export function createAgentsHouseAdapter(options) {
|
|
19
48
|
if ('site' in options)
|
|
20
|
-
return createSiteAdapter(options.site);
|
|
49
|
+
return createSiteAdapter(options.site, options.snapshot === true);
|
|
21
50
|
const transport = options.transport;
|
|
22
51
|
const notifications = houseNotifications(transport, 'credential');
|
|
23
52
|
const tracked = new Map();
|
|
@@ -28,12 +57,22 @@ export function createAgentsHouseAdapter(options) {
|
|
|
28
57
|
throw new Error('no Discovery declared the bounds');
|
|
29
58
|
return bounds;
|
|
30
59
|
}
|
|
31
|
-
async function bootstrappedRoom(envelope,
|
|
32
|
-
|
|
60
|
+
async function bootstrappedRoom(envelope, sent, asked, continued) {
|
|
61
|
+
const { entry } = asked;
|
|
62
|
+
if (sent === undefined)
|
|
33
63
|
return { kind: 'room-not-readable', locator: entry.locator };
|
|
34
|
-
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;
|
|
35
74
|
if (continued === null && next === null)
|
|
36
|
-
handed.set(entry.locator,
|
|
75
|
+
handed.set(entry.locator, scopeHanded(scope));
|
|
37
76
|
else
|
|
38
77
|
handed.delete(entry.locator);
|
|
39
78
|
notifications.reach(entry.authority, scope);
|
|
@@ -42,67 +81,91 @@ export function createAgentsHouseAdapter(options) {
|
|
|
42
81
|
...entry.schemas.filter((schema) => scope.files.some((file) => file.path === schema)),
|
|
43
82
|
];
|
|
44
83
|
const models = await partModels(scope, entry, new Set(seen), next === null);
|
|
45
|
-
const continuation = next === null
|
|
84
|
+
const continuation = next === null
|
|
85
|
+
? null
|
|
86
|
+
: { after: next, seen, ...(cursor?.cut === undefined ? {} : { cut: cursor.cut }) };
|
|
46
87
|
return {
|
|
47
88
|
...bootstrapOf(scope),
|
|
48
89
|
...(models === undefined ? {} : { models }),
|
|
49
90
|
...(continuation === null ? {} : { pageToken: JSON.stringify(continuation) }),
|
|
50
91
|
};
|
|
51
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
|
+
}
|
|
52
111
|
async function enumeratedRoom(enumeration, ask) {
|
|
53
|
-
const
|
|
54
|
-
if (
|
|
112
|
+
const first = viewOf(enumeration, ask.entry);
|
|
113
|
+
if (first === undefined)
|
|
55
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;
|
|
56
118
|
notifications.reach(ask.entry.authority, view);
|
|
57
119
|
const answer = refreshFrom(view, ask.fromRoomVersion);
|
|
58
120
|
if (answer.kind !== 'net-advancement')
|
|
59
121
|
return answer;
|
|
60
|
-
handed.set(ask.entry.locator,
|
|
122
|
+
handed.set(ask.entry.locator, enumeratedHanded(view, handed.get(ask.entry.locator)));
|
|
61
123
|
const models = await viewModels(view, ask.entry);
|
|
62
124
|
return models === undefined ? answer : { ...answer, models };
|
|
63
125
|
}
|
|
64
126
|
async function streamed(entry, request, from) {
|
|
65
|
-
const
|
|
66
|
-
if (
|
|
127
|
+
const held = handed.get(entry.locator);
|
|
128
|
+
if (held?.roomVersion !== request.fromRoomVersion)
|
|
67
129
|
return null;
|
|
68
|
-
const advanced = notifications.advance(entry, from, (path, revision) =>
|
|
130
|
+
const advanced = notifications.advance(entry, from, (path, revision) => held.revisions.get(path) === revision);
|
|
69
131
|
if (advanced === null)
|
|
70
132
|
return null;
|
|
71
|
-
|
|
72
|
-
if (relinked === null)
|
|
73
|
-
return null;
|
|
74
|
-
handed.set(entry.locator, relinked);
|
|
133
|
+
handed.set(entry.locator, streamedHanded(held, advanced));
|
|
75
134
|
const models = await streamedModels(advanced.schemas, entry, 'credential');
|
|
76
135
|
return models === undefined ? advanced.page : { ...advanced.page, models };
|
|
77
136
|
}
|
|
78
|
-
function held(rooms) {
|
|
137
|
+
function held(rooms, demand) {
|
|
79
138
|
const kept = rooms.flatMap((room) => {
|
|
80
139
|
const entry = tracked.get(room.locator);
|
|
81
140
|
const at = logPosition(room.roomVersion);
|
|
82
141
|
if (entry === undefined || at === null)
|
|
83
142
|
return [];
|
|
84
|
-
handed.set(room.locator,
|
|
143
|
+
handed.set(room.locator, heldHanded(room));
|
|
85
144
|
notifications.reach(entry.authority, at);
|
|
86
145
|
return [presented(entry.authority, at)];
|
|
87
146
|
});
|
|
88
|
-
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
|
+
});
|
|
89
156
|
}
|
|
90
157
|
function adopted(entry, outcome) {
|
|
91
158
|
if (outcome.kind !== 'accepted')
|
|
92
159
|
return outcome;
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const
|
|
99
|
-
handed.set(entry.locator, relinked.links);
|
|
100
|
-
const at = logPosition(accepted.roomVersion);
|
|
160
|
+
const held = handed.get(entry.locator);
|
|
161
|
+
if (held === undefined)
|
|
162
|
+
return outcome;
|
|
163
|
+
const follows = followsVersion(held.roomVersion, outcome.roomVersion);
|
|
164
|
+
handed.set(entry.locator, acceptedHanded(held, outcome, follows ? outcome.roomVersion : held.roomVersion));
|
|
165
|
+
const at = logPosition(outcome.roomVersion);
|
|
101
166
|
if (follows && at !== null)
|
|
102
167
|
notifications.reach(entry.authority, at);
|
|
103
|
-
return
|
|
104
|
-
? accepted
|
|
105
|
-
: { ...accepted, attachments: relinked.attachments };
|
|
168
|
+
return outcome;
|
|
106
169
|
}
|
|
107
170
|
function authorityFor(locator) {
|
|
108
171
|
return tracked.get(locator);
|
|
@@ -124,13 +187,19 @@ export function createAgentsHouseAdapter(options) {
|
|
|
124
187
|
function weight(entry) {
|
|
125
188
|
return contentPrefixes(entry).length;
|
|
126
189
|
}
|
|
127
|
-
|
|
128
|
-
|
|
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 }));
|
|
129
196
|
while (open.length > 0) {
|
|
130
197
|
const unreached = [];
|
|
131
198
|
for (const part of selections(open, ({ entry }) => weight(entry), declared().max_prefixes)) {
|
|
199
|
+
const held = holding(part.map(({ asked }) => asked), null);
|
|
132
200
|
const answered = await transport.door(DOOR_BOOTSTRAP, {
|
|
133
201
|
prefixes: part.flatMap(({ entry }) => contentPrefixes(entry)),
|
|
202
|
+
...(held.length === 0 ? {} : { held }),
|
|
134
203
|
});
|
|
135
204
|
const classified = part.map(({ entry }) => classifyDoor(answered.status, answered.body, entry.locator));
|
|
136
205
|
const envelope = classified[0] === null ? parseEnvelope(answered.body) : null;
|
|
@@ -149,71 +218,79 @@ export function createAgentsHouseAdapter(options) {
|
|
|
149
218
|
unreached.push(asked);
|
|
150
219
|
continue;
|
|
151
220
|
}
|
|
152
|
-
answer(asked.ask, await bootstrappedRoom(envelope, scope, asked.
|
|
221
|
+
answer(asked.ask, await bootstrappedRoom(envelope, scope, asked.asked, null));
|
|
153
222
|
}
|
|
154
223
|
}
|
|
155
224
|
open = unreached;
|
|
156
225
|
}
|
|
157
226
|
}
|
|
158
|
-
async function continuedBootstrap(
|
|
159
|
-
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);
|
|
160
235
|
const answered = await transport.door(DOOR_BOOTSTRAP, {
|
|
161
236
|
prefixes: contentPrefixes(entry),
|
|
162
237
|
after,
|
|
238
|
+
...(held.length === 0 ? {} : { held }),
|
|
163
239
|
});
|
|
164
|
-
const failure =
|
|
240
|
+
const failure = classifyRead(answered.status, answered.body, entry.locator);
|
|
165
241
|
if (failure !== null)
|
|
166
242
|
return failure;
|
|
167
243
|
const envelope = parseEnvelope(answered.body);
|
|
168
244
|
if (envelope === null)
|
|
169
245
|
return UNCERTAIN_READ;
|
|
170
246
|
const scope = envelope.scopes.find((candidate) => matchesScope(candidate, entry));
|
|
171
|
-
return bootstrappedRoom(envelope, scope,
|
|
247
|
+
return bootstrappedRoom(envelope, scope, asked, continued);
|
|
172
248
|
}
|
|
173
249
|
function layered(asks) {
|
|
174
250
|
const depths = new Map();
|
|
175
251
|
const layers = [];
|
|
176
252
|
for (const ask of asks) {
|
|
177
|
-
const depth = depths.get(ask.entry.authority) ?? 0;
|
|
178
|
-
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);
|
|
179
255
|
(layers[depth] ??= []).push(ask);
|
|
180
256
|
}
|
|
181
257
|
return layers;
|
|
182
258
|
}
|
|
183
259
|
async function enumerated(asks) {
|
|
184
|
-
const answers =
|
|
185
|
-
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));
|
|
186
262
|
for (const part of parts) {
|
|
187
263
|
let open = [...part];
|
|
188
264
|
while (open.length > 0) {
|
|
189
265
|
const answer = await transport.door(DOOR_ENUMERATE, {
|
|
190
|
-
prefixes: open.flatMap((ask) => contentPrefixes(ask.entry)),
|
|
191
|
-
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)),
|
|
192
268
|
});
|
|
193
|
-
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));
|
|
194
270
|
if (classified[0]?.kind === 'beyond-horizon') {
|
|
195
271
|
const named = doorRefusal(answer.body)?.fields.authority;
|
|
196
|
-
const expired = open.filter((ask) => ask.entry.authority === named);
|
|
272
|
+
const expired = open.filter(({ ask }) => ask.entry.authority === named);
|
|
197
273
|
const answered = expired.length === 0 ? UNCERTAIN_READ : { kind: 'beyond-horizon' };
|
|
198
274
|
const gone = expired.length === 0 ? open : expired;
|
|
199
275
|
for (const ask of gone)
|
|
200
|
-
answers.
|
|
276
|
+
answers[ask.index] = answered;
|
|
201
277
|
open = open.filter((ask) => !gone.includes(ask));
|
|
202
278
|
continue;
|
|
203
279
|
}
|
|
204
280
|
const enumeration = classified[0] === null ? parseEnumeration(answer.body, 'credential') : null;
|
|
205
|
-
for (const [
|
|
206
|
-
const failure = classified[
|
|
281
|
+
for (const [answerIndex, { ask, index }] of open.entries()) {
|
|
282
|
+
const failure = classified[answerIndex];
|
|
207
283
|
if (failure !== null && failure !== undefined) {
|
|
208
|
-
answers
|
|
284
|
+
answers[index] = failure;
|
|
209
285
|
continue;
|
|
210
286
|
}
|
|
211
|
-
answers
|
|
287
|
+
answers[index] =
|
|
288
|
+
enumeration === null ? UNCERTAIN_READ : await enumeratedRoom(enumeration, ask);
|
|
212
289
|
}
|
|
213
290
|
open = [];
|
|
214
291
|
}
|
|
215
292
|
}
|
|
216
|
-
return
|
|
293
|
+
return answers;
|
|
217
294
|
}
|
|
218
295
|
const bootstrapTogether = gatheredEach(bootstrapped);
|
|
219
296
|
const enumerateTogether = gathered(enumerated);
|
|
@@ -232,9 +309,7 @@ export function createAgentsHouseAdapter(options) {
|
|
|
232
309
|
return { outcome: UNCERTAIN };
|
|
233
310
|
const delivered = await transport.transfer({
|
|
234
311
|
act: 'authored_batch_upload',
|
|
235
|
-
method: 'POST',
|
|
236
312
|
url: grant.url,
|
|
237
|
-
answer: 'json',
|
|
238
313
|
body: `${grant.operation}\n${delta}`,
|
|
239
314
|
});
|
|
240
315
|
if (delivered.status !== 200)
|
|
@@ -246,7 +321,30 @@ export function createAgentsHouseAdapter(options) {
|
|
|
246
321
|
await keep(upload);
|
|
247
322
|
return { body: { ...head, paths, upload, runtime: notifications.runtime } };
|
|
248
323
|
}
|
|
249
|
-
async function
|
|
324
|
+
async function staged(answer, batch) {
|
|
325
|
+
const refusal = doorRefusal(answer.body);
|
|
326
|
+
if (refusal?.code !== 'files_unstaged')
|
|
327
|
+
return null;
|
|
328
|
+
const grants = refusal.fields.upload;
|
|
329
|
+
if (!Array.isArray(grants))
|
|
330
|
+
return false;
|
|
331
|
+
for (const grant of grants) {
|
|
332
|
+
const { url, operation, sha256 } = grant;
|
|
333
|
+
const change = batch.changes.find((held) => held.kind === 'binary' && held.sha256 === sha256);
|
|
334
|
+
if (typeof url !== 'string' || typeof operation !== 'string' || change === undefined)
|
|
335
|
+
return false;
|
|
336
|
+
const delivered = await transport.transfer({
|
|
337
|
+
act: 'binary_stage',
|
|
338
|
+
url,
|
|
339
|
+
body: change.blob,
|
|
340
|
+
operation,
|
|
341
|
+
});
|
|
342
|
+
if (delivered.status !== 200)
|
|
343
|
+
return false;
|
|
344
|
+
}
|
|
345
|
+
return true;
|
|
346
|
+
}
|
|
347
|
+
async function submit(batch, head, changes, delta, bytes, entry, handed, keep) {
|
|
250
348
|
const inline = { ...head, changes, runtime: notifications.runtime };
|
|
251
349
|
const prepared = uploadable(inline, bytes, declared())
|
|
252
350
|
? await uploaded(head, changes, delta, bytes, entry, handed, keep)
|
|
@@ -254,7 +352,33 @@ export function createAgentsHouseAdapter(options) {
|
|
|
254
352
|
if ('outcome' in prepared)
|
|
255
353
|
return prepared.outcome;
|
|
256
354
|
const answer = await transport.door(DOOR_BATCH, prepared.body);
|
|
257
|
-
|
|
355
|
+
const stagedFiles = await staged(answer, batch);
|
|
356
|
+
if (stagedFiles === false)
|
|
357
|
+
return UNCERTAIN;
|
|
358
|
+
const settled = stagedFiles === null ? answer : await transport.door(DOOR_BATCH, prepared.body);
|
|
359
|
+
if (stagedFiles === true && (await staged(settled, batch)) !== null)
|
|
360
|
+
return UNCERTAIN;
|
|
361
|
+
return mutationOutcome(settled.status, settled.body, entry.locator, entry.handle);
|
|
362
|
+
}
|
|
363
|
+
async function downloaded(answer, locator) {
|
|
364
|
+
const failure = classifyDoor(answer.status, answer.body, locator);
|
|
365
|
+
if (failure !== null) {
|
|
366
|
+
return failure.kind === 'scoped-refusal'
|
|
367
|
+
? {
|
|
368
|
+
kind: 'rejected',
|
|
369
|
+
code: failure.code,
|
|
370
|
+
fields: failure.fields,
|
|
371
|
+
retryable: failure.retryable,
|
|
372
|
+
}
|
|
373
|
+
: failure;
|
|
374
|
+
}
|
|
375
|
+
const grant = parseGrant(answer.body);
|
|
376
|
+
if (grant === null || grant.method !== 'GET')
|
|
377
|
+
return UNCERTAIN_READ;
|
|
378
|
+
const read = await transport.download(grant.url);
|
|
379
|
+
if (read.status !== 200 || read.blob === null)
|
|
380
|
+
return UNCERTAIN_READ;
|
|
381
|
+
return { kind: 'binary', blob: read.blob };
|
|
258
382
|
}
|
|
259
383
|
return {
|
|
260
384
|
async authorize() {
|
|
@@ -286,10 +410,11 @@ export function createAgentsHouseAdapter(options) {
|
|
|
286
410
|
const entry = authorityFor(request.locator);
|
|
287
411
|
if (entry === undefined)
|
|
288
412
|
return { kind: 'room-not-readable', locator: request.locator };
|
|
413
|
+
const asked = { entry, held: request.held };
|
|
289
414
|
if (request.pageToken !== undefined) {
|
|
290
|
-
return continuedBootstrap(
|
|
415
|
+
return continuedBootstrap(asked, JSON.parse(request.pageToken));
|
|
291
416
|
}
|
|
292
|
-
return bootstrapTogether(
|
|
417
|
+
return bootstrapTogether(asked);
|
|
293
418
|
},
|
|
294
419
|
async refresh(_authorization, request) {
|
|
295
420
|
const entry = authorityFor(request.locator);
|
|
@@ -316,10 +441,11 @@ export function createAgentsHouseAdapter(options) {
|
|
|
316
441
|
const delta = deltaBody(mapped.changes);
|
|
317
442
|
const bytes = deltaBytes(delta);
|
|
318
443
|
const handed = request.upload;
|
|
319
|
-
const
|
|
444
|
+
const batch = request.changeBatch;
|
|
445
|
+
const outcome = await submit(batch, head, mapped.changes, delta, bytes, entry, handed, keep);
|
|
320
446
|
if (handed === undefined || !lapsedGrant(outcome))
|
|
321
447
|
return adopted(entry, outcome);
|
|
322
|
-
return adopted(entry, await submit(head, mapped.changes, delta, bytes, entry, undefined, keep));
|
|
448
|
+
return adopted(entry, await submit(batch, head, mapped.changes, delta, bytes, entry, undefined, keep));
|
|
323
449
|
},
|
|
324
450
|
async history(_authorization, request) {
|
|
325
451
|
const entry = authorityFor(request.locator);
|
|
@@ -336,6 +462,37 @@ export function createAgentsHouseAdapter(options) {
|
|
|
336
462
|
...(request.revision === undefined ? {} : { revision: request.revision }),
|
|
337
463
|
});
|
|
338
464
|
},
|
|
465
|
+
async binary(_authorization, request) {
|
|
466
|
+
if (request.kind === 'path') {
|
|
467
|
+
const entry = authorityFor(request.locator);
|
|
468
|
+
if (entry === undefined)
|
|
469
|
+
return { kind: 'room-not-readable', locator: request.locator };
|
|
470
|
+
const answer = await transport.door(DOOR_FILES_GET, {
|
|
471
|
+
room_ref: entry.authority,
|
|
472
|
+
path: request.path,
|
|
473
|
+
revision: request.revision,
|
|
474
|
+
});
|
|
475
|
+
return downloaded(answer, request.locator);
|
|
476
|
+
}
|
|
477
|
+
const referrer = houseReferrer(request.referrer, tracked);
|
|
478
|
+
if (referrer === null) {
|
|
479
|
+
return { kind: 'rejected', code: 'referrer_unknown', fields: {}, retryable: false };
|
|
480
|
+
}
|
|
481
|
+
const answer = await transport.door(DOOR_FILES_GET, {
|
|
482
|
+
file: request.fileRef,
|
|
483
|
+
referrer: referrer.referrer,
|
|
484
|
+
});
|
|
485
|
+
return downloaded(answer, referrer.locator);
|
|
486
|
+
},
|
|
487
|
+
referrerScope(referrer) {
|
|
488
|
+
const held = houseReferrer(referrer, tracked);
|
|
489
|
+
if (held === null)
|
|
490
|
+
return null;
|
|
491
|
+
if (held.locator === '')
|
|
492
|
+
return { kind: 'conversations' };
|
|
493
|
+
const { path } = held.referrer;
|
|
494
|
+
return { kind: 'room', locator: held.locator, ...(path === undefined ? {} : { path }) };
|
|
495
|
+
},
|
|
339
496
|
reached(locator, version, target) {
|
|
340
497
|
return reachedVersion(version, target, authorityFor(locator)?.logEpoch);
|
|
341
498
|
},
|
|
@@ -345,7 +502,16 @@ export function createAgentsHouseAdapter(options) {
|
|
|
345
502
|
async action(_authorization, request) {
|
|
346
503
|
return withAt(await houseAction(transport, request));
|
|
347
504
|
},
|
|
348
|
-
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
|
+
},
|
|
349
515
|
conversations: notifications.conversations,
|
|
350
516
|
serviceMode: notifications.serviceMode,
|
|
351
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/handed.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { HeldRoom, MutationResult } from '@agentshouse/mdruntime';
|
|
2
|
+
import type { HouseScope, HouseView } from './read.js';
|
|
3
|
+
import type { StreamedAdvancement } from './stream.js';
|
|
4
|
+
export type HandedRoom = {
|
|
5
|
+
roomVersion: string;
|
|
6
|
+
revisions: ReadonlyMap<string, string>;
|
|
7
|
+
};
|
|
8
|
+
export declare function scopeHanded(scope: HouseScope): HandedRoom;
|
|
9
|
+
export declare function heldHanded(held: HeldRoom): HandedRoom;
|
|
10
|
+
export declare function acceptedHanded(held: HandedRoom, accepted: Extract<MutationResult, {
|
|
11
|
+
kind: 'accepted';
|
|
12
|
+
}>, roomVersion: string): HandedRoom;
|
|
13
|
+
export declare function enumeratedHanded(view: HouseView, earlier: HandedRoom | undefined): HandedRoom;
|
|
14
|
+
export declare function streamedHanded(held: HandedRoom, advanced: StreamedAdvancement): HandedRoom;
|
|
15
|
+
//# sourceMappingURL=handed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handed.d.ts","sourceRoot":"","sources":["../src/handed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGvD,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CASzD;AAOD,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAErD;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,EACvD,WAAW,EAAE,MAAM,GAClB,UAAU,CAKZ;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,CAM7F;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,mBAAmB,GAAG,UAAU,CAM1F"}
|
package/dist/handed.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { roomVersion } from './version.js';
|
|
2
|
+
export function scopeHanded(scope) {
|
|
3
|
+
return {
|
|
4
|
+
roomVersion: roomVersion(scope),
|
|
5
|
+
revisions: new Map(scope.files.flatMap(({ path, revision }) => revision === undefined ? [] : [[path, revision]])),
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
function revised(revisions, path, revision) {
|
|
9
|
+
if (revision === undefined)
|
|
10
|
+
revisions.delete(path);
|
|
11
|
+
else
|
|
12
|
+
revisions.set(path, revision);
|
|
13
|
+
}
|
|
14
|
+
export function heldHanded(held) {
|
|
15
|
+
return { roomVersion: held.roomVersion, revisions: new Map(Object.entries(held.revisions)) };
|
|
16
|
+
}
|
|
17
|
+
export function acceptedHanded(held, accepted, roomVersion) {
|
|
18
|
+
const revisions = new Map(held.revisions);
|
|
19
|
+
for (const [path, revision] of Object.entries(accepted.revisions))
|
|
20
|
+
revisions.set(path, revision);
|
|
21
|
+
for (const path of accepted.removals)
|
|
22
|
+
revisions.delete(path);
|
|
23
|
+
return { roomVersion, revisions };
|
|
24
|
+
}
|
|
25
|
+
export function enumeratedHanded(view, earlier) {
|
|
26
|
+
const revisions = new Map(earlier?.revisions);
|
|
27
|
+
for (const change of view.changes) {
|
|
28
|
+
revised(revisions, change.path, 'removed' in change ? undefined : change.revision);
|
|
29
|
+
}
|
|
30
|
+
return { roomVersion: roomVersion(view), revisions };
|
|
31
|
+
}
|
|
32
|
+
export function streamedHanded(held, advanced) {
|
|
33
|
+
const revisions = new Map(held.revisions);
|
|
34
|
+
for (const entry of advanced.entries) {
|
|
35
|
+
revised(revisions, entry.path, entry.kind === 'removed' ? undefined : entry.revision);
|
|
36
|
+
}
|
|
37
|
+
return { roomVersion: advanced.page.roomVersion, revisions };
|
|
38
|
+
}
|
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,
|
|
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);
|