@agentshouse/mdruntime-adapter 0.1.0-cc63dd043d0e2 → 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 +270 -183
- package/README.md +3 -3
- package/dist/actions.d.ts +63 -2
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +154 -138
- package/dist/adapter.d.ts +1 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +325 -166
- package/dist/discovery.d.ts +6 -12
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +32 -36
- package/dist/gather.d.ts +1 -0
- package/dist/gather.d.ts.map +1 -1
- package/dist/gather.js +11 -6
- 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 +7 -18
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +60 -39
- package/dist/read.d.ts +35 -7
- package/dist/read.d.ts.map +1 -1
- package/dist/read.js +164 -86
- 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 +5 -9
- package/dist/refusal.d.ts.map +1 -1
- package/dist/refusal.js +31 -17
- package/dist/site.d.ts +1 -1
- package/dist/site.d.ts.map +1 -1
- package/dist/site.js +191 -107
- package/dist/stream.d.ts +10 -4
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +391 -47
- package/dist/transport.d.ts +79 -11
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +3 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +10 -1
- package/dist/write.d.ts +2 -1
- package/dist/write.d.ts.map +1 -1
- package/dist/write.js +96 -14
- package/package.json +3 -4
- package/dist/links.d.ts +0 -12
- package/dist/links.d.ts.map +0 -1
- package/dist/links.js +0 -66
package/dist/site.js
CHANGED
|
@@ -1,100 +1,150 @@
|
|
|
1
|
-
import { actionOutcome } from './actions.js';
|
|
1
|
+
import { actionOutcome, SITE_SUBMIT } from './actions.js';
|
|
2
2
|
import { mapDiscovery, parseSiteDiscovery, siteCapabilities, siteTracked, } from './discovery.js';
|
|
3
|
-
import {
|
|
4
|
-
import { advancedScope, bootstrapOf, parseEnumeration, parseSiteBootstrap, refreshFrom,
|
|
5
|
-
import {
|
|
3
|
+
import { partModels, streamedModels, viewModels } from './model.js';
|
|
4
|
+
import { advancedScope, bootstrapOf, parseEnumeration, parseSiteBootstrap, refreshFrom, siteBootstrapNext, siteBootstrapOffset, viewOf, wholeView, } from './read.js';
|
|
5
|
+
import { sha256Hex } from './digest.js';
|
|
6
|
+
import { classifyDoor, classifyRead, discoveryFailure } from './refusal.js';
|
|
6
7
|
import { houseNotifications } from './stream.js';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
8
|
+
import { SITE_DOOR_BOOTSTRAP, SITE_DOOR_DISCOVER, SITE_DOOR_ENUMERATE, SITE_DOOR_SUBMIT, SITE_FILE_RECORD, SITE_FILES, } from './transport.js';
|
|
9
|
+
import { houseReferrer } from './referrer.js';
|
|
10
|
+
import { followsVersion, logPosition, presented, reachedVersion, roomVersion, } from './version.js';
|
|
9
11
|
const UNCERTAIN = { kind: 'transport-uncertainty' };
|
|
10
|
-
function siteRoom(tracked
|
|
12
|
+
function siteRoom(tracked) {
|
|
11
13
|
return {
|
|
12
14
|
name: tracked.handle,
|
|
13
15
|
locator: tracked.locator,
|
|
16
|
+
handle: tracked.handle,
|
|
14
17
|
roomVersion: roomVersion(tracked),
|
|
15
18
|
operations: { read: [''], sync: [''], write: [], delete: [] },
|
|
16
19
|
replica: { selection: tracked.locator, admission: 'admitted' },
|
|
17
|
-
attachedModel,
|
|
18
20
|
providerOwnedPaths: [],
|
|
19
21
|
};
|
|
20
22
|
}
|
|
21
23
|
function settled(refused) {
|
|
22
|
-
return refused.kind === 'beyond-horizon'
|
|
23
|
-
? UNCERTAIN
|
|
24
|
-
: refused;
|
|
24
|
+
return refused.kind === 'beyond-horizon' ? UNCERTAIN : refused;
|
|
25
25
|
}
|
|
26
|
-
export function createSiteAdapter(transport) {
|
|
26
|
+
export function createSiteAdapter(transport, snapshot = false) {
|
|
27
27
|
const notifications = houseNotifications(transport, 'site');
|
|
28
28
|
const tracked = new Map();
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
function published(referrer) {
|
|
30
|
+
const named = houseReferrer(referrer, tracked);
|
|
31
|
+
return named === null || !tracked.has(named.locator) ? null : named;
|
|
32
|
+
}
|
|
33
|
+
async function enumerated(entry, from, page) {
|
|
33
34
|
const answer = await transport.door(SITE_DOOR_ENUMERATE, {
|
|
34
|
-
positions: [
|
|
35
|
+
positions: [
|
|
36
|
+
page === undefined
|
|
37
|
+
? presented(entry.authority, from)
|
|
38
|
+
: {
|
|
39
|
+
...presented(entry.authority, { position: page.after, logEpoch: from.logEpoch }),
|
|
40
|
+
page: { through: page.through, read: page.read },
|
|
41
|
+
},
|
|
42
|
+
],
|
|
35
43
|
});
|
|
36
|
-
const
|
|
37
|
-
if (behind?.code === 'replica_behind' && behind.retryable) {
|
|
38
|
-
return { kind: 'retryable-refusal', code: behind.code, fields: behind.fields };
|
|
39
|
-
}
|
|
40
|
-
const classified = classifyDoor(answer.status, answer.body, entry.locator);
|
|
44
|
+
const classified = classifyRead(answer.status, answer.body, entry.locator);
|
|
41
45
|
if (classified !== null)
|
|
42
46
|
return classified;
|
|
43
|
-
|
|
47
|
+
const found = parseEnumeration(answer.body, 'site');
|
|
48
|
+
if (found === null)
|
|
49
|
+
return UNCERTAIN;
|
|
50
|
+
return viewOf(found, entry) ?? { kind: 'room-not-readable', locator: entry.locator };
|
|
44
51
|
}
|
|
45
|
-
async function
|
|
46
|
-
const
|
|
52
|
+
async function enumeration(entry, from) {
|
|
53
|
+
const first = await enumerated(entry, from);
|
|
54
|
+
return 'kind' in first ? first : wholeView(first, (page) => enumerated(entry, from, page));
|
|
55
|
+
}
|
|
56
|
+
async function bootstrapPart(entry, after, offset) {
|
|
57
|
+
const query = [
|
|
58
|
+
...(after === null ? [] : [`after=${encodeURIComponent(after)}`]),
|
|
59
|
+
...(offset === null ? [] : [`offset=${offset}`]),
|
|
60
|
+
];
|
|
61
|
+
const answer = await transport.read(`${SITE_DOOR_BOOTSTRAP}${entry.authority}${query.length === 0 ? '' : `?${query.join('&')}`}`);
|
|
47
62
|
const classified = classifyDoor(answer.status, answer.body, entry.locator);
|
|
48
63
|
if (classified !== null)
|
|
49
|
-
return { failure:
|
|
64
|
+
return { failure: classified };
|
|
50
65
|
const scope = parseSiteBootstrap(answer.body);
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
66
|
+
return scope === null ? { failure: UNCERTAIN } : { body: answer.body, scope };
|
|
67
|
+
}
|
|
68
|
+
async function assembled(entry, scope, path, offset) {
|
|
69
|
+
const opened = scope.contents.at(-1);
|
|
70
|
+
if (opened === undefined || opened.path !== path || opened.content.length !== offset) {
|
|
71
|
+
return UNCERTAIN;
|
|
72
|
+
}
|
|
73
|
+
let text = opened.content;
|
|
74
|
+
for (;;) {
|
|
75
|
+
const part = await bootstrapPart(entry, path, text.length);
|
|
76
|
+
if ('failure' in part)
|
|
77
|
+
return part.failure;
|
|
78
|
+
const [piece] = part.scope.contents;
|
|
79
|
+
if (piece === undefined ||
|
|
80
|
+
part.scope.contents.length !== 1 ||
|
|
81
|
+
piece.path !== path ||
|
|
82
|
+
piece.content.length === 0) {
|
|
83
|
+
return UNCERTAIN;
|
|
84
|
+
}
|
|
85
|
+
text += piece.content;
|
|
86
|
+
const more = siteBootstrapOffset(part.body);
|
|
87
|
+
if (more === null)
|
|
88
|
+
break;
|
|
89
|
+
if (more !== text.length)
|
|
90
|
+
return UNCERTAIN;
|
|
91
|
+
}
|
|
92
|
+
const file = scope.files.find((held) => held.path === path);
|
|
93
|
+
if (file === undefined || (await sha256Hex(text)) !== file.version)
|
|
94
|
+
return UNCERTAIN;
|
|
95
|
+
return { ...scope, contents: [...scope.contents.slice(0, -1), { path, content: text }] };
|
|
96
|
+
}
|
|
97
|
+
async function caughtUp(entry, after) {
|
|
98
|
+
const part = await bootstrapPart(entry, after, null);
|
|
99
|
+
if ('failure' in part)
|
|
100
|
+
return part;
|
|
101
|
+
const next = siteBootstrapNext(part.body);
|
|
102
|
+
const offset = siteBootstrapOffset(part.body);
|
|
103
|
+
if (offset !== null) {
|
|
104
|
+
if (next === null)
|
|
105
|
+
return { failure: UNCERTAIN };
|
|
106
|
+
const scope = await assembled(entry, part.scope, next, offset);
|
|
107
|
+
return 'kind' in scope ? { failure: scope } : { scope, next };
|
|
108
|
+
}
|
|
109
|
+
const { scope } = part;
|
|
110
|
+
if (after !== null || next !== null || roomVersion(scope) === roomVersion(entry)) {
|
|
111
|
+
return { scope, next };
|
|
112
|
+
}
|
|
113
|
+
const view = await enumeration(entry, scope);
|
|
114
|
+
if ('kind' in view)
|
|
115
|
+
return { failure: settled(view) };
|
|
116
|
+
return { scope: advancedScope(scope, view), next: null };
|
|
62
117
|
}
|
|
63
118
|
async function refreshed(entry, fromRoomVersion) {
|
|
64
119
|
const from = logPosition(fromRoomVersion);
|
|
65
120
|
if (from === null)
|
|
66
121
|
return { kind: 'beyond-horizon' };
|
|
67
122
|
const streamed = notifications.advance(entry, from);
|
|
68
|
-
if (streamed !== null)
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
return { snapshot: failedModel(held.failure), identity: null };
|
|
82
|
-
const model = await heldModel(schemaOf(held.scope, entry.schema), schemaPath(entry.handle, entry.schema), MODEL_ABSENT);
|
|
83
|
-
acquired.set(entry.authority, { roomVersion: roomVersion(held.scope), model });
|
|
84
|
-
return model;
|
|
123
|
+
if (streamed !== null) {
|
|
124
|
+
const models = await streamedModels(streamed.schemas, entry, 'site');
|
|
125
|
+
return models === undefined ? streamed.page : { ...streamed.page, models };
|
|
126
|
+
}
|
|
127
|
+
const view = await enumeration(entry, from);
|
|
128
|
+
if ('kind' in view)
|
|
129
|
+
return view;
|
|
130
|
+
notifications.reach(entry.authority, view);
|
|
131
|
+
const answer = refreshFrom(view, fromRoomVersion);
|
|
132
|
+
if (answer.kind !== 'net-advancement')
|
|
133
|
+
return answer;
|
|
134
|
+
const models = await viewModels(view, entry);
|
|
135
|
+
return models === undefined ? answer : { ...answer, models };
|
|
85
136
|
}
|
|
86
137
|
return {
|
|
138
|
+
localSaves: true,
|
|
139
|
+
exhaustiveDiscovery: true,
|
|
87
140
|
async authorize() {
|
|
88
141
|
return {};
|
|
89
142
|
},
|
|
90
|
-
async model(_authorization, request) {
|
|
91
|
-
return models.answer(request);
|
|
92
|
-
},
|
|
93
143
|
async discover() {
|
|
94
144
|
const answer = await transport.read(SITE_DOOR_DISCOVER);
|
|
95
|
-
const
|
|
96
|
-
if (
|
|
97
|
-
return
|
|
145
|
+
const failed = discoveryFailure(answer.status, answer.body);
|
|
146
|
+
if (failed !== null)
|
|
147
|
+
return failed;
|
|
98
148
|
const document = parseSiteDiscovery(answer.body);
|
|
99
149
|
if (document === null)
|
|
100
150
|
return UNCERTAIN;
|
|
@@ -103,42 +153,30 @@ export function createSiteAdapter(transport) {
|
|
|
103
153
|
for (const entry of entries)
|
|
104
154
|
tracked.set(entry.locator, entry);
|
|
105
155
|
notifications.track(entries);
|
|
106
|
-
|
|
107
|
-
for (const authority of [...acquired.keys()]) {
|
|
108
|
-
if (!published.has(authority))
|
|
109
|
-
acquired.delete(authority);
|
|
110
|
-
}
|
|
111
|
-
const fresh = new Map();
|
|
112
|
-
const current = new Map();
|
|
113
|
-
for (const entry of entries) {
|
|
114
|
-
const kept = acquired.get(entry.authority);
|
|
115
|
-
if (kept !== undefined && kept.roomVersion === roomVersion(entry)) {
|
|
116
|
-
current.set(entry.authority, kept.model);
|
|
117
|
-
continue;
|
|
118
|
-
}
|
|
119
|
-
const held = await caughtUp(entry);
|
|
120
|
-
fresh.set(entry.authority, held);
|
|
121
|
-
current.set(entry.authority, await acquire(entry, held));
|
|
122
|
-
}
|
|
123
|
-
caught = fresh;
|
|
124
|
-
const rooms = entries.map((entry) => {
|
|
125
|
-
const shelved = models.retain(modelKey(entry.locator, 'collection'), current.get(entry.authority));
|
|
126
|
-
return siteRoom(entry, shelved?.identity ?? null);
|
|
127
|
-
});
|
|
128
|
-
models.keep(entries.map((entry) => entry.locator));
|
|
129
|
-
return mapDiscovery(document, rooms, siteCapabilities());
|
|
156
|
+
return mapDiscovery(document, entries.map(siteRoom), siteCapabilities());
|
|
130
157
|
},
|
|
131
158
|
async bootstrap(_authorization, request) {
|
|
132
159
|
const entry = tracked.get(request.locator);
|
|
133
160
|
if (entry === undefined)
|
|
134
161
|
return { kind: 'room-not-readable', locator: request.locator };
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
162
|
+
const continued = request.pageToken === undefined
|
|
163
|
+
? null
|
|
164
|
+
: JSON.parse(request.pageToken);
|
|
165
|
+
const held = await caughtUp(entry, continued?.after ?? null);
|
|
138
166
|
if ('failure' in held)
|
|
139
167
|
return held.failure;
|
|
140
|
-
notifications.
|
|
141
|
-
|
|
168
|
+
notifications.reach(entry.authority, held.scope);
|
|
169
|
+
const seen = [
|
|
170
|
+
...(continued?.seen ?? []),
|
|
171
|
+
...entry.schemas.filter((schema) => held.scope.files.some((file) => file.path === schema)),
|
|
172
|
+
];
|
|
173
|
+
const models = await partModels(held.scope, entry, new Set(seen), held.next === null);
|
|
174
|
+
const continuation = held.next === null ? null : { after: held.next, seen };
|
|
175
|
+
return {
|
|
176
|
+
...bootstrapOf(held.scope),
|
|
177
|
+
...(models === undefined ? {} : { models }),
|
|
178
|
+
...(continuation === null ? {} : { pageToken: JSON.stringify(continuation) }),
|
|
179
|
+
};
|
|
142
180
|
},
|
|
143
181
|
async refresh(_authorization, request) {
|
|
144
182
|
const entry = tracked.get(request.locator);
|
|
@@ -146,39 +184,85 @@ export function createSiteAdapter(transport) {
|
|
|
146
184
|
return { kind: 'room-not-readable', locator: request.locator };
|
|
147
185
|
if (request.pageToken !== undefined)
|
|
148
186
|
return UNCERTAIN;
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
? result.roomVersion
|
|
154
|
-
: result.kind === 'still-current'
|
|
155
|
-
? request.fromRoomVersion
|
|
156
|
-
: null;
|
|
157
|
-
if (request.minPosition !== undefined &&
|
|
158
|
-
answered !== null &&
|
|
159
|
-
!reachedVersion(answered, request.minPosition, entry.logEpoch)) {
|
|
160
|
-
return { kind: 'retryable-refusal', code: 'replica_behind', fields: {} };
|
|
187
|
+
if (snapshot) {
|
|
188
|
+
return request.fromRoomVersion === roomVersion(entry)
|
|
189
|
+
? { kind: 'still-current' }
|
|
190
|
+
: { kind: 'beyond-horizon' };
|
|
161
191
|
}
|
|
162
|
-
return
|
|
192
|
+
return refreshed(entry, request.fromRoomVersion);
|
|
163
193
|
},
|
|
164
194
|
async mutate() {
|
|
165
|
-
return { kind: 'rejected', affected: {}, code: 'write-grant', fields: {} };
|
|
195
|
+
return { kind: 'rejected', affected: {}, code: 'write-grant', fields: {}, retryable: false };
|
|
166
196
|
},
|
|
167
197
|
async history() {
|
|
168
198
|
return { kind: 'no-history' };
|
|
169
199
|
},
|
|
200
|
+
async binary(_authorization, request) {
|
|
201
|
+
const named = published(request.kind === 'path' ? { room: request.locator, path: request.path } : request.referrer);
|
|
202
|
+
if (named === null) {
|
|
203
|
+
return { kind: 'rejected', code: 'referrer_unknown', fields: {}, retryable: false };
|
|
204
|
+
}
|
|
205
|
+
if (request.fileRef === undefined) {
|
|
206
|
+
return { kind: 'rejected', code: 'file_not_found', fields: {}, retryable: false };
|
|
207
|
+
}
|
|
208
|
+
const { room_ref, path, record } = named.referrer;
|
|
209
|
+
const read = await transport.download(`${SITE_FILES}${room_ref}/${encodeURIComponent(request.fileRef)}/${path === undefined
|
|
210
|
+
? `${SITE_FILE_RECORD}/${encodeURIComponent(record)}`
|
|
211
|
+
: encodeURIComponent(path)}`);
|
|
212
|
+
if (read.status === 404) {
|
|
213
|
+
return { kind: 'rejected', code: 'file_not_found', fields: {}, retryable: false };
|
|
214
|
+
}
|
|
215
|
+
return read.status === 200 && read.blob !== null
|
|
216
|
+
? { kind: 'binary', blob: read.blob }
|
|
217
|
+
: UNCERTAIN;
|
|
218
|
+
},
|
|
219
|
+
referrerScope(referrer) {
|
|
220
|
+
const named = published(referrer);
|
|
221
|
+
if (named === null)
|
|
222
|
+
return null;
|
|
223
|
+
const { path } = named.referrer;
|
|
224
|
+
return { kind: 'room', locator: named.locator, ...(path === undefined ? {} : { path }) };
|
|
225
|
+
},
|
|
170
226
|
reached(locator, version, target) {
|
|
171
227
|
return reachedVersion(version, target, tracked.get(locator)?.logEpoch);
|
|
172
228
|
},
|
|
229
|
+
follows(_locator, version, next) {
|
|
230
|
+
return followsVersion(version, next);
|
|
231
|
+
},
|
|
173
232
|
async action(_authorization, request) {
|
|
174
|
-
if (request.name !==
|
|
175
|
-
return {
|
|
233
|
+
if (request.name !== SITE_SUBMIT) {
|
|
234
|
+
return {
|
|
235
|
+
kind: 'rejected',
|
|
236
|
+
code: 'action-unimplemented',
|
|
237
|
+
fields: { name: request.name },
|
|
238
|
+
retryable: false,
|
|
239
|
+
};
|
|
176
240
|
}
|
|
177
241
|
if (!transport.online())
|
|
178
242
|
return UNCERTAIN;
|
|
179
|
-
return actionOutcome(await transport.door(SITE_DOOR_SUBMIT, request.input),
|
|
243
|
+
return actionOutcome(await transport.door(SITE_DOOR_SUBMIT, request.input), SITE_SUBMIT);
|
|
180
244
|
},
|
|
181
|
-
|
|
245
|
+
roomStream: snapshot
|
|
246
|
+
? undefined
|
|
247
|
+
: {
|
|
248
|
+
hold(rooms) {
|
|
249
|
+
notifications.send(rooms.flatMap((room) => {
|
|
250
|
+
const entry = tracked.get(room.locator);
|
|
251
|
+
const at = logPosition(room.roomVersion);
|
|
252
|
+
if (entry === undefined || at === null)
|
|
253
|
+
return [];
|
|
254
|
+
notifications.reach(entry.authority, at);
|
|
255
|
+
return [presented(entry.authority, at)];
|
|
256
|
+
}), null);
|
|
257
|
+
},
|
|
258
|
+
reopen: notifications.reopen,
|
|
259
|
+
observe: notifications.observe,
|
|
260
|
+
published(locator, roomVersion) {
|
|
261
|
+
const at = logPosition(roomVersion);
|
|
262
|
+
if (at !== null)
|
|
263
|
+
notifications.published(locator, at);
|
|
264
|
+
},
|
|
265
|
+
},
|
|
182
266
|
serviceMode: notifications.serviceMode,
|
|
183
267
|
};
|
|
184
268
|
}
|
package/dist/stream.d.ts
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
|
-
import type { ConversationStream, RefreshPage,
|
|
1
|
+
import type { ConversationStream, RefreshPage, RoomStreamEvent, ServiceModeSignal, StreamReceipts } from '@agentshouse/mdruntime';
|
|
2
2
|
import type { TrackedAuthority } from './discovery.js';
|
|
3
|
-
import type { HouseDoor, HouseMode, HouseStreamEntry } from './transport.js';
|
|
3
|
+
import type { HouseDemand, HouseDoor, HouseHeldRoom, HouseMode, HouseStreamEntry } from './transport.js';
|
|
4
4
|
import { type LogPosition } from './version.js';
|
|
5
5
|
export type HeldRevision = (path: string, revision: string) => boolean;
|
|
6
6
|
export type StreamedAdvancement = {
|
|
7
7
|
page: RefreshPage;
|
|
8
8
|
entries: readonly HouseStreamEntry[];
|
|
9
|
+
schemas: ReadonlyMap<string, HouseStreamEntry>;
|
|
9
10
|
};
|
|
10
|
-
export type HouseNotifications =
|
|
11
|
+
export type HouseNotifications = {
|
|
12
|
+
runtime: string;
|
|
13
|
+
observe(notify: (event: RoomStreamEvent) => void, receipts: StreamReceipts): () => void;
|
|
14
|
+
send(rooms: readonly HouseHeldRoom[], demand: HouseDemand | null): void;
|
|
15
|
+
published(locator: string, at: LogPosition): void;
|
|
16
|
+
reopen(): void;
|
|
11
17
|
track(authorities: readonly TrackedAuthority[]): void;
|
|
12
|
-
|
|
18
|
+
reach(authority: string, at: LogPosition): void;
|
|
13
19
|
advance(tracked: TrackedAuthority, from: LogPosition, holds?: HeldRevision): StreamedAdvancement | null;
|
|
14
20
|
conversations: ConversationStream;
|
|
15
21
|
serviceMode: ServiceModeSignal;
|
package/dist/stream.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,kBAAkB,EAElB,WAAW,EACX,eAAe,EAEf,iBAAiB,EACjB,cAAc,EAEf,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,aAAa,EAEb,SAAS,EAET,gBAAgB,EAEjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AA0C7D,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;AAEvE,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACrC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,EAAE,QAAQ,EAAE,cAAc,GAAG,MAAM,IAAI,CAAC;IACxF,IAAI,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;IACxE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC;IAClD,MAAM,IAAI,IAAI,CAAC;IACf,KAAK,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,GAAG,IAAI,CAAC;IACtD,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC;IAChD,OAAO,CACL,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,WAAW,EACjB,KAAK,CAAC,EAAE,YAAY,GACnB,mBAAmB,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,kBAAkB,CAAC;IAClC,WAAW,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAkFF,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,kBAAkB,CAohB5F"}
|