@agentshouse/mdruntime-adapter 0.1.0-cf6a7cf003c4b → 0.1.0-cf9ab9b7cbbca
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 +261 -231
- package/dist/actions.d.ts +23 -0
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +74 -32
- package/dist/adapter.d.ts +1 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +229 -61
- 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 +29 -6
- package/dist/read.d.ts.map +1 -1
- package/dist/read.js +150 -52
- 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 +303 -16
- package/dist/transport.d.ts +52 -7
- 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 +61 -8
- 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);
|
|
@@ -244,7 +321,30 @@ export function createAgentsHouseAdapter(options) {
|
|
|
244
321
|
await keep(upload);
|
|
245
322
|
return { body: { ...head, paths, upload, runtime: notifications.runtime } };
|
|
246
323
|
}
|
|
247
|
-
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) {
|
|
248
348
|
const inline = { ...head, changes, runtime: notifications.runtime };
|
|
249
349
|
const prepared = uploadable(inline, bytes, declared())
|
|
250
350
|
? await uploaded(head, changes, delta, bytes, entry, handed, keep)
|
|
@@ -252,7 +352,33 @@ export function createAgentsHouseAdapter(options) {
|
|
|
252
352
|
if ('outcome' in prepared)
|
|
253
353
|
return prepared.outcome;
|
|
254
354
|
const answer = await transport.door(DOOR_BATCH, prepared.body);
|
|
255
|
-
|
|
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 };
|
|
256
382
|
}
|
|
257
383
|
return {
|
|
258
384
|
async authorize() {
|
|
@@ -284,10 +410,11 @@ export function createAgentsHouseAdapter(options) {
|
|
|
284
410
|
const entry = authorityFor(request.locator);
|
|
285
411
|
if (entry === undefined)
|
|
286
412
|
return { kind: 'room-not-readable', locator: request.locator };
|
|
413
|
+
const asked = { entry, held: request.held };
|
|
287
414
|
if (request.pageToken !== undefined) {
|
|
288
|
-
return continuedBootstrap(
|
|
415
|
+
return continuedBootstrap(asked, JSON.parse(request.pageToken));
|
|
289
416
|
}
|
|
290
|
-
return bootstrapTogether(
|
|
417
|
+
return bootstrapTogether(asked);
|
|
291
418
|
},
|
|
292
419
|
async refresh(_authorization, request) {
|
|
293
420
|
const entry = authorityFor(request.locator);
|
|
@@ -314,10 +441,11 @@ export function createAgentsHouseAdapter(options) {
|
|
|
314
441
|
const delta = deltaBody(mapped.changes);
|
|
315
442
|
const bytes = deltaBytes(delta);
|
|
316
443
|
const handed = request.upload;
|
|
317
|
-
const
|
|
444
|
+
const batch = request.changeBatch;
|
|
445
|
+
const outcome = await submit(batch, head, mapped.changes, delta, bytes, entry, handed, keep);
|
|
318
446
|
if (handed === undefined || !lapsedGrant(outcome))
|
|
319
447
|
return adopted(entry, outcome);
|
|
320
|
-
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));
|
|
321
449
|
},
|
|
322
450
|
async history(_authorization, request) {
|
|
323
451
|
const entry = authorityFor(request.locator);
|
|
@@ -334,6 +462,37 @@ export function createAgentsHouseAdapter(options) {
|
|
|
334
462
|
...(request.revision === undefined ? {} : { revision: request.revision }),
|
|
335
463
|
});
|
|
336
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
|
+
},
|
|
337
496
|
reached(locator, version, target) {
|
|
338
497
|
return reachedVersion(version, target, authorityFor(locator)?.logEpoch);
|
|
339
498
|
},
|
|
@@ -343,7 +502,16 @@ export function createAgentsHouseAdapter(options) {
|
|
|
343
502
|
async action(_authorization, request) {
|
|
344
503
|
return withAt(await houseAction(transport, request));
|
|
345
504
|
},
|
|
346
|
-
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
|
+
},
|
|
347
515
|
conversations: notifications.conversations,
|
|
348
516
|
serviceMode: notifications.serviceMode,
|
|
349
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, HouseByteTransfer, 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, HouseClosing, 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,YAAY,EACZ,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);
|