@agentshouse/mdruntime 0.1.0-c0136de3edfbe → 0.1.0-c01d4615bfe46
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/README.md +16 -15
- package/dist/acceptance.d.ts +0 -3
- package/dist/acceptance.d.ts.map +1 -1
- package/dist/acceptance.js +74 -164
- package/dist/act-lanes.d.ts +30 -0
- package/dist/act-lanes.d.ts.map +1 -0
- package/dist/act-lanes.js +225 -0
- package/dist/actions.d.ts +8 -2
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +122 -68
- package/dist/adapter.d.ts +49 -55
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts +0 -1
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +0 -5
- package/dist/bootstrap.d.ts +1 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +6 -18
- package/dist/change-set.d.ts +4 -0
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +6 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +4 -2
- package/dist/chat-types.d.ts +2 -2
- package/dist/chat-types.d.ts.map +1 -1
- package/dist/chat-types.js +11 -2
- package/dist/client.d.ts +13 -19
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +35 -19
- package/dist/collection.d.ts +22 -4
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +12 -2
- package/dist/compile.d.ts +2 -0
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +31 -24
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +32 -24
- package/dist/conversation-live.d.ts +147 -0
- package/dist/conversation-live.d.ts.map +1 -0
- package/dist/conversation-live.js +258 -0
- package/dist/conversation-row.d.ts.map +1 -1
- package/dist/conversation-row.js +7 -1
- package/dist/conversation.d.ts +52 -44
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +956 -1029
- package/dist/declaration.d.ts +10 -0
- package/dist/declaration.d.ts.map +1 -0
- package/dist/declaration.js +24 -0
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +19 -44
- package/dist/durability.d.ts +13 -0
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +4 -0
- package/dist/entry.js +1 -1
- package/dist/expectation.d.ts +26 -13
- package/dist/expectation.d.ts.map +1 -1
- package/dist/expectation.js +72 -19
- package/dist/failure.d.ts +3 -0
- package/dist/failure.d.ts.map +1 -1
- package/dist/failure.js +6 -0
- package/dist/figures.d.ts +1 -0
- package/dist/figures.d.ts.map +1 -1
- package/dist/figures.js +2 -2
- package/dist/file.d.ts.map +1 -1
- package/dist/file.js +2 -1
- package/dist/holdings.d.ts +29 -0
- package/dist/holdings.d.ts.map +1 -0
- package/dist/holdings.js +95 -0
- package/dist/host.d.ts +18 -2
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +46 -11
- package/dist/index.d.ts +17 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -6
- package/dist/install.d.ts +2 -4
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +53 -83
- package/dist/lifecycle.d.ts +1 -1
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +45 -35
- package/dist/listing.d.ts +6 -11
- package/dist/listing.d.ts.map +1 -1
- package/dist/listing.js +25 -61
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +3 -3
- package/dist/locks.d.ts +2 -4
- package/dist/locks.d.ts.map +1 -1
- package/dist/locks.js +10 -39
- package/dist/lost.d.ts.map +1 -1
- package/dist/lost.js +10 -22
- package/dist/media.d.ts +1 -1
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +10 -13
- package/dist/memory.d.ts +7 -3
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +58 -27
- package/dist/messages.d.ts +10 -6
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +26 -36
- package/dist/model.d.ts +0 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +0 -5
- package/dist/models.d.ts +4 -8
- package/dist/models.d.ts.map +1 -1
- package/dist/models.js +95 -135
- package/dist/observation.d.ts +3 -2
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +22 -21
- package/dist/opened.d.ts +1 -1
- package/dist/opened.d.ts.map +1 -1
- package/dist/opened.js +5 -5
- package/dist/opening.d.ts.map +1 -1
- package/dist/opening.js +7 -10
- package/dist/outcome.d.ts +10 -1
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +23 -2
- package/dist/overlay.d.ts +5 -1
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +36 -21
- package/dist/page-metadata.d.ts +8 -0
- package/dist/page-metadata.d.ts.map +1 -0
- package/dist/page-metadata.js +19 -0
- package/dist/parts.d.ts +3 -58
- package/dist/parts.d.ts.map +1 -1
- package/dist/parts.js +10 -115
- package/dist/paths.d.ts +1 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +22 -0
- package/dist/preparation.d.ts.map +1 -1
- package/dist/preparation.js +25 -24
- package/dist/presence.d.ts +52 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +220 -0
- package/dist/queries.d.ts +1 -1
- package/dist/queries.d.ts.map +1 -1
- package/dist/queries.js +24 -14
- package/dist/query.d.ts +0 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/questions.d.ts +2 -5
- package/dist/questions.d.ts.map +1 -1
- package/dist/questions.js +3 -6
- package/dist/queue.d.ts +40 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +450 -0
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +68 -23
- package/dist/react.d.ts +11 -1
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +33 -1
- package/dist/readiness.d.ts +1 -2
- package/dist/readiness.d.ts.map +1 -1
- package/dist/reads.d.ts +4 -1
- package/dist/reads.d.ts.map +1 -1
- package/dist/reads.js +47 -5
- package/dist/recovery.d.ts +3 -1
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +29 -7
- package/dist/refresh.js +2 -2
- package/dist/refusal.d.ts.map +1 -1
- package/dist/refusal.js +5 -6
- package/dist/replica.d.ts +5 -10
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +15 -16
- package/dist/retried.d.ts +30 -0
- package/dist/retried.d.ts.map +1 -0
- package/dist/retried.js +72 -0
- package/dist/room-draft.d.ts +4 -6
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +48 -59
- package/dist/room-drafts.d.ts.map +1 -1
- package/dist/room-drafts.js +17 -16
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +3 -4
- package/dist/runtime.d.ts +11 -19
- package/dist/runtime.d.ts.map +1 -1
- package/dist/save.d.ts +42 -86
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +333 -163
- package/dist/saves.d.ts +2 -40
- package/dist/saves.d.ts.map +1 -1
- package/dist/saves.js +109 -703
- package/dist/seed.d.ts.map +1 -1
- package/dist/seed.js +2 -3
- package/dist/shared.d.ts +1 -6
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +13 -95
- package/dist/shown.d.ts +6 -4
- package/dist/shown.d.ts.map +1 -1
- package/dist/shown.js +43 -35
- package/dist/socket/lanes.d.ts +12 -4
- package/dist/socket/lanes.d.ts.map +1 -1
- package/dist/socket/lanes.js +34 -8
- package/dist/socket/session.d.ts +0 -1
- package/dist/socket/session.d.ts.map +1 -1
- package/dist/socket.d.ts +3 -6
- package/dist/socket.d.ts.map +1 -1
- package/dist/socket.js +5 -16
- package/dist/source.d.ts +0 -7
- package/dist/source.d.ts.map +1 -1
- package/dist/source.js +5 -4
- package/dist/store/records.d.ts +11 -8
- package/dist/store/records.d.ts.map +1 -1
- package/dist/store/records.js +43 -12
- package/dist/store/space.d.ts +1 -1
- package/dist/store/space.d.ts.map +1 -1
- package/dist/store/space.js +0 -2
- package/dist/store/watchers.js +1 -2
- package/dist/store.d.ts +12 -7
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +38 -13
- package/dist/stored.d.ts +2 -1
- package/dist/stored.d.ts.map +1 -1
- package/dist/stored.js +27 -15
- package/dist/surface.d.ts +7 -4
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +30 -25
- package/dist/sync.d.ts +0 -1
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +93 -89
- package/dist/tables.d.ts +19 -11
- package/dist/tables.d.ts.map +1 -1
- package/dist/tables.js +58 -21
- package/dist/tallies.d.ts.map +1 -1
- package/dist/tallies.js +6 -7
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +2 -2
- package/dist/wire.d.ts +53 -7
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +17 -4
- package/package.json +3 -2
- package/dist/attempt.d.ts +0 -16
- package/dist/attempt.d.ts.map +0 -1
- package/dist/attempt.js +0 -70
- package/dist/job.d.ts +0 -33
- package/dist/job.d.ts.map +0 -1
- package/dist/job.js +0 -54
- package/dist/log.d.ts +0 -6
- package/dist/log.d.ts.map +0 -1
- package/dist/log.js +0 -14
- package/dist/socket/rooms.d.ts +0 -43
- package/dist/socket/rooms.d.ts.map +0 -1
- package/dist/socket/rooms.js +0 -90
- package/dist/store/fences.d.ts +0 -16
- package/dist/store/fences.d.ts.map +0 -1
- package/dist/store/fences.js +0 -26
package/dist/listing.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { declared } from './declaration.js';
|
|
1
2
|
import { modelTypes, NO_MODEL } from './model.js';
|
|
2
3
|
import { governs, holds } from './reach.js';
|
|
3
|
-
export function modelIn({ socket }, locator, stored) {
|
|
4
|
+
export function modelIn({ socket, presence }, locator, stored) {
|
|
4
5
|
if (socket.session.now().refusal?.code === 'revoked-authorization')
|
|
5
6
|
return { status: 'unavailable', reason: 'revoked' };
|
|
6
|
-
return stored?.record.model ??
|
|
7
|
+
return stored?.record.model ?? presence.unheldModel(locator) ?? NO_MODEL;
|
|
7
8
|
}
|
|
8
9
|
export function compositionFor(runtime, record) {
|
|
9
10
|
return runtime.store.composed({
|
|
@@ -11,17 +12,19 @@ export function compositionFor(runtime, record) {
|
|
|
11
12
|
model: modelIn(runtime, record.locator, { record, indexed: true, documents: 0 }),
|
|
12
13
|
});
|
|
13
14
|
}
|
|
14
|
-
export function declarationOf({
|
|
15
|
-
const
|
|
16
|
-
const room = stored?.record ??
|
|
17
|
-
|
|
15
|
+
export function declarationOf({ presence }, locator, stored) {
|
|
16
|
+
const listed = presence.room(locator);
|
|
17
|
+
const room = stored?.record.declaration ?? (listed === undefined ? undefined : declared(listed));
|
|
18
|
+
if (room === undefined)
|
|
19
|
+
return undefined;
|
|
20
|
+
return {
|
|
21
|
+
room,
|
|
22
|
+
available: presence.available(locator, stored?.record.declaration.replica.selection),
|
|
23
|
+
};
|
|
18
24
|
}
|
|
19
|
-
export function listedLocators({
|
|
20
|
-
const
|
|
21
|
-
return [
|
|
22
|
-
...declared.keys(),
|
|
23
|
-
...[...held.keys()].filter((locator) => !declared.has(locator)),
|
|
24
|
-
].filter((locator) => !store.fences.has(locator));
|
|
25
|
+
export function listedLocators({ presence }, held) {
|
|
26
|
+
const listed = presence.rooms().map(({ locator }) => locator);
|
|
27
|
+
return [...new Set([...listed, ...held.keys()])];
|
|
25
28
|
}
|
|
26
29
|
function selectionModel({ socket, builtIn }) {
|
|
27
30
|
return socket.session.now().refusal?.code === 'revoked-authorization'
|
|
@@ -33,7 +36,7 @@ function listedRoom(runtime, locator, stored) {
|
|
|
33
36
|
if (declaration === undefined)
|
|
34
37
|
return undefined;
|
|
35
38
|
const { room, available } = declaration;
|
|
36
|
-
const selection = room.typedSelection
|
|
39
|
+
const selection = room.typedSelection;
|
|
37
40
|
return {
|
|
38
41
|
name: room.name,
|
|
39
42
|
locator,
|
|
@@ -45,9 +48,10 @@ function listedRoom(runtime, locator, stored) {
|
|
|
45
48
|
? null
|
|
46
49
|
: { roots: selection.roots, model: modelTypes(selectionModel(runtime)) },
|
|
47
50
|
providerOwnedPaths: room.providerOwnedPaths,
|
|
51
|
+
authoredPaths: room.authoredPaths,
|
|
48
52
|
roomVersion: stored?.record.roomVersion ?? null,
|
|
49
53
|
synchronizationAvailable: available,
|
|
50
|
-
refusal: runtime.
|
|
54
|
+
refusal: runtime.presence.refusal(locator),
|
|
51
55
|
documents: stored?.documents ?? 0,
|
|
52
56
|
};
|
|
53
57
|
}
|
|
@@ -68,9 +72,7 @@ export async function patchedListing(runtime, changed) {
|
|
|
68
72
|
const held = await store.rooms([...changed]);
|
|
69
73
|
const listing = new Map(roomsShown);
|
|
70
74
|
for (const locator of changed) {
|
|
71
|
-
const room =
|
|
72
|
-
? undefined
|
|
73
|
-
: listedRoom(runtime, locator, held.get(locator));
|
|
75
|
+
const room = listedRoom(runtime, locator, held.get(locator));
|
|
74
76
|
if (room === undefined || !listing.has(locator))
|
|
75
77
|
return null;
|
|
76
78
|
listing.set(locator, room);
|
|
@@ -80,11 +82,9 @@ export async function patchedListing(runtime, changed) {
|
|
|
80
82
|
export async function listingNow(runtime) {
|
|
81
83
|
return listingOf(runtime, await runtime.store.rooms());
|
|
82
84
|
}
|
|
83
|
-
function
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
export function shownRooms(runtime, listing) {
|
|
87
|
-
return structuredClone([...listing.values()].map(({ documents, ...room }) => lockedIn(runtime, listing, room.locator)
|
|
85
|
+
export function shownRooms({ presence }, listing) {
|
|
86
|
+
const locked = new Set(presence.lockedAmong(new Map([...listing].map(([locator, room]) => [locator, room.replica.offline]))));
|
|
87
|
+
return structuredClone([...listing.values()].map(({ documents, ...room }) => locked.has(room.locator)
|
|
88
88
|
? {
|
|
89
89
|
...room,
|
|
90
90
|
model: modelTypes(NO_MODEL),
|
|
@@ -113,42 +113,6 @@ export async function roomFacts(runtime, reach = null) {
|
|
|
113
113
|
});
|
|
114
114
|
return { listed: socket.session.now().roomsListed, rooms };
|
|
115
115
|
}
|
|
116
|
-
export function list({ store, socket }, room, synchronizationAvailable) {
|
|
117
|
-
if (store.fences.has(room.locator))
|
|
118
|
-
return;
|
|
119
|
-
socket.rooms.declare(room.locator, {
|
|
120
|
-
room: {
|
|
121
|
-
name: room.name,
|
|
122
|
-
locator: room.locator,
|
|
123
|
-
handle: room.handle,
|
|
124
|
-
operations: room.operations,
|
|
125
|
-
replica: room.replica,
|
|
126
|
-
typedSelection: room.typedSelection ?? null,
|
|
127
|
-
providerOwnedPaths: room.providerOwnedPaths,
|
|
128
|
-
},
|
|
129
|
-
available: synchronizationAvailable,
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
export function listHeld({ store, socket }, locator) {
|
|
133
|
-
if (store.fences.has(locator))
|
|
134
|
-
return;
|
|
135
|
-
socket.rooms.declare(locator, { room: null, available: false });
|
|
136
|
-
}
|
|
137
|
-
export function admitted({ socket }, room) {
|
|
138
|
-
return room.replica.admission === 'admitted' && !socket.rooms.standing(room.locator).unreadable;
|
|
139
|
-
}
|
|
140
|
-
export function readable(runtime, room) {
|
|
141
|
-
runtime.socket.rooms.stand(room.locator, { unreadable: false });
|
|
142
|
-
list(runtime, room, true);
|
|
143
|
-
}
|
|
144
|
-
export function usable(runtime, room) {
|
|
145
|
-
const { rooms } = runtime.socket;
|
|
146
|
-
rooms.stand(room.locator, { stale: false, unpreparable: false });
|
|
147
|
-
if (rooms.standing(room.locator).unreadable) {
|
|
148
|
-
rooms.stand(room.locator, { unreadable: false, refusal: null });
|
|
149
|
-
}
|
|
150
|
-
list(runtime, room, true);
|
|
151
|
-
}
|
|
152
116
|
export async function heldRooms({ store }, listed) {
|
|
153
117
|
const stored = await store.rooms(listed.map((room) => room.locator));
|
|
154
118
|
return listed.flatMap((room) => {
|
|
@@ -158,14 +122,14 @@ export async function heldRooms({ store }, listed) {
|
|
|
158
122
|
? [{ locator: room.locator, roomVersion: null }]
|
|
159
123
|
: [];
|
|
160
124
|
}
|
|
161
|
-
if (record.replica.selection !== room.replica.selection)
|
|
125
|
+
if (record.declaration.replica.selection !== room.replica.selection)
|
|
162
126
|
return [];
|
|
163
127
|
return [{ locator: room.locator, roomVersion: record.roomVersion }];
|
|
164
128
|
});
|
|
165
129
|
}
|
|
166
130
|
export async function name(runtime, locator) {
|
|
167
|
-
const { socket } = runtime;
|
|
168
|
-
const room =
|
|
131
|
+
const { socket, presence } = runtime;
|
|
132
|
+
const room = presence.room(locator);
|
|
169
133
|
if (!socket.streamed || room === undefined || !socket.isOpen() || !socket.isHanded())
|
|
170
134
|
return;
|
|
171
135
|
const [held] = await heldRooms(runtime, [room]);
|
package/dist/live.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,KAAK,GAAG;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;CAAE,GAAG,aAAa,CAAC;AAE7F,MAAM,MAAM,GAAG,GAAG,WAAW,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAA;CAAE,CAAC;AAEpE,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAE5E,KAAK,QAAQ,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;AAchD,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;IAC9B,OAAO,IAAI,IAAI,CAAC;IAChB,KAAK,CACH,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,EACzB,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,IAAI,GACX,MAAM,IAAI,CAAC;IACd,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAmCF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CA2HxF"}
|
package/dist/live.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { changeOf, digestOf, } from './observation.js';
|
|
2
|
+
import { uncaught } from './failure.js';
|
|
2
3
|
import { roomOfKey } from './rows.js';
|
|
3
4
|
function narrowed(plan) {
|
|
4
5
|
return (plan.paths !== null &&
|
|
@@ -76,7 +77,6 @@ export function createLiveQueries(run, holding) {
|
|
|
76
77
|
}
|
|
77
78
|
}
|
|
78
79
|
catch (error) {
|
|
79
|
-
entry.dirty = false;
|
|
80
80
|
const unanswered = [...entry.fresh.values()];
|
|
81
81
|
entry.fresh.clear();
|
|
82
82
|
for (const failed of unanswered)
|
|
@@ -113,8 +113,8 @@ export function createLiveQueries(run, holding) {
|
|
|
113
113
|
}
|
|
114
114
|
} while (recoverAgain && !closed);
|
|
115
115
|
}
|
|
116
|
-
catch {
|
|
117
|
-
|
|
116
|
+
catch (error) {
|
|
117
|
+
uncaught(error);
|
|
118
118
|
}
|
|
119
119
|
finally {
|
|
120
120
|
recovering = false;
|
package/dist/locks.d.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import type { DiscoveredRoom } from './adapter.js';
|
|
2
1
|
import type { Runtime } from './runtime.js';
|
|
3
|
-
export declare function locked({ store,
|
|
4
|
-
export declare function lockedRooms(
|
|
2
|
+
export declare function locked({ store, presence }: Runtime, locator: string): Promise<boolean>;
|
|
3
|
+
export declare function lockedRooms({ store, presence }: Runtime): Promise<readonly string[]>;
|
|
5
4
|
export declare function relocked(runtime: Runtime, before: readonly string[]): Promise<void>;
|
|
6
|
-
export declare function confirmLocks({ socket }: Runtime, listed: readonly DiscoveredRoom[]): void;
|
|
7
5
|
export declare function connectionLost(runtime: Runtime): void;
|
|
8
6
|
export declare function watchLocks({ store }: Runtime, notify: () => void): () => void;
|
|
9
7
|
//# sourceMappingURL=locks.d.ts.map
|
package/dist/locks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locks.d.ts","sourceRoot":"","sources":["../src/locks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"locks.d.ts","sourceRoot":"","sources":["../src/locks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,wBAAsB,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5F;AAED,wBAAsB,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAK1F;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,iBAKzE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,QAU9C;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAE7E"}
|
package/dist/locks.js
CHANGED
|
@@ -1,59 +1,30 @@
|
|
|
1
|
+
import { uncaught } from './failure.js';
|
|
1
2
|
import { emitRooms, LOCKS_TOPIC } from './shown.js';
|
|
2
|
-
async function
|
|
3
|
-
|
|
4
|
-
for (const [locator, { room }] of socket.rooms.declarations()) {
|
|
5
|
-
const declaration = room ?? socket.rooms.discovered(locator);
|
|
6
|
-
if (declaration !== undefined)
|
|
7
|
-
modes.set(locator, declaration.replica.offline);
|
|
8
|
-
}
|
|
9
|
-
for (const [locator, { offline }] of (await store.covering()).rooms)
|
|
10
|
-
modes.set(locator, offline);
|
|
11
|
-
return modes;
|
|
3
|
+
export async function locked({ store, presence }, locator) {
|
|
4
|
+
return presence.locked(locator, async () => (await store.open()).offline(locator));
|
|
12
5
|
}
|
|
13
|
-
export async function
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const held = socket.rooms.declared(locator)?.room ?? socket.rooms.discovered(locator);
|
|
17
|
-
const mode = (await (await store.open()).offline(locator)) ?? held?.replica.offline;
|
|
18
|
-
return mode === 'locked';
|
|
19
|
-
}
|
|
20
|
-
export async function lockedRooms(runtime) {
|
|
21
|
-
const { store, socket } = runtime;
|
|
22
|
-
return [...(await offlineModes(runtime))]
|
|
23
|
-
.filter(([locator, mode]) => mode === 'locked' &&
|
|
24
|
-
!socket.rooms.standing(locator).confirmed &&
|
|
25
|
-
!store.fences.has(locator))
|
|
26
|
-
.map(([locator]) => locator)
|
|
27
|
-
.sort();
|
|
6
|
+
export async function lockedRooms({ store, presence }) {
|
|
7
|
+
const held = (await store.covering()).rooms;
|
|
8
|
+
return presence.lockedAmong(new Map([...held].map(([locator, { offline }]) => [locator, offline])));
|
|
28
9
|
}
|
|
29
10
|
export async function relocked(runtime, before) {
|
|
30
11
|
const after = await lockedRooms(runtime);
|
|
31
12
|
if (JSON.stringify(after) === JSON.stringify(before))
|
|
32
13
|
return;
|
|
33
|
-
runtime.journal.record(`locked ${after.length}`);
|
|
34
14
|
emitRooms(runtime);
|
|
35
15
|
runtime.store.tell(LOCKS_TOPIC, undefined);
|
|
36
16
|
}
|
|
37
|
-
export function confirmLocks({ socket }, listed) {
|
|
38
|
-
if (!socket.isOpen())
|
|
39
|
-
return;
|
|
40
|
-
for (const room of listed) {
|
|
41
|
-
if (room.replica.admission === 'admitted') {
|
|
42
|
-
socket.rooms.stand(room.locator, { confirmed: true });
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
17
|
export function connectionLost(runtime) {
|
|
47
|
-
const { socket } = runtime;
|
|
18
|
+
const { socket, presence } = runtime;
|
|
48
19
|
if (socket.closed())
|
|
49
20
|
return;
|
|
50
|
-
|
|
21
|
+
presence.connectionLost(() => {
|
|
51
22
|
if (socket.isOpen() || socket.closed())
|
|
52
23
|
return;
|
|
53
24
|
void lockedRooms(runtime).then((before) => {
|
|
54
|
-
|
|
25
|
+
presence.lapse();
|
|
55
26
|
return relocked(runtime, before);
|
|
56
|
-
},
|
|
27
|
+
}, uncaught);
|
|
57
28
|
});
|
|
58
29
|
}
|
|
59
30
|
export function watchLocks({ store }, notify) {
|
package/dist/lost.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lost.d.ts","sourceRoot":"","sources":["../src/lost.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"lost.d.ts","sourceRoot":"","sources":["../src/lost.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAK5C,wBAAsB,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,iBAIhF;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,QAMtE;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,iBA+B5E"}
|
package/dist/lost.js
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import { changeSet, mergeChangeSets } from './change-set.js';
|
|
2
|
-
import { ERASE_BATCH
|
|
3
|
-
import {
|
|
2
|
+
import { ERASE_BATCH } from './install.js';
|
|
3
|
+
import { unpair } from './queue.js';
|
|
4
|
+
import { recoverReads } from './shown.js';
|
|
4
5
|
import { yielded } from './turn.js';
|
|
5
|
-
function forget({ store, socket }, locator) {
|
|
6
|
-
forgetInstall(store, locator);
|
|
7
|
-
socket.rooms.forget(locator);
|
|
8
|
-
store.forget(locator);
|
|
9
|
-
}
|
|
10
6
|
export async function eraseFenced({ store }, locators) {
|
|
11
7
|
for (const locator of locators) {
|
|
12
8
|
while (await store.durably((local) => local.erase(locator, ERASE_BATCH)))
|
|
@@ -14,24 +10,17 @@ export async function eraseFenced({ store }, locators) {
|
|
|
14
10
|
}
|
|
15
11
|
}
|
|
16
12
|
export function fenceLive(runtime, locators) {
|
|
17
|
-
const { store, socket,
|
|
13
|
+
const { store, socket, presence } = runtime;
|
|
18
14
|
for (const locator of new Set(locators)) {
|
|
19
|
-
if (!
|
|
15
|
+
if (!presence.lose(locator, socket.session.now().discoveries))
|
|
20
16
|
continue;
|
|
21
|
-
forget(
|
|
22
|
-
journal.record(`room lost ${locator}`);
|
|
17
|
+
store.forget(locator);
|
|
23
18
|
}
|
|
24
19
|
}
|
|
25
20
|
export async function loseRooms(runtime, locators) {
|
|
26
|
-
const { store } = runtime;
|
|
21
|
+
const { store, presence } = runtime;
|
|
27
22
|
fenceLive(runtime, locators);
|
|
28
|
-
const fresh = [...new Set(locators)].filter((locator) =>
|
|
29
|
-
const fence = store.fences.of(locator);
|
|
30
|
-
if (fence === undefined || fence.written)
|
|
31
|
-
return false;
|
|
32
|
-
store.fences.mark(locator, true);
|
|
33
|
-
return true;
|
|
34
|
-
});
|
|
23
|
+
const fresh = [...new Set(locators)].filter((locator) => presence.writing(locator));
|
|
35
24
|
if (fresh.length === 0)
|
|
36
25
|
return;
|
|
37
26
|
let held = [];
|
|
@@ -43,7 +32,7 @@ export async function loseRooms(runtime, locators) {
|
|
|
43
32
|
}
|
|
44
33
|
catch (error) {
|
|
45
34
|
for (const locator of fresh)
|
|
46
|
-
|
|
35
|
+
presence.unwritten(locator);
|
|
47
36
|
throw error;
|
|
48
37
|
}
|
|
49
38
|
finally {
|
|
@@ -54,8 +43,7 @@ export async function loseRooms(runtime, locators) {
|
|
|
54
43
|
drafts: held.filter((draft) => draft.locator === locator).map(({ path }) => path),
|
|
55
44
|
}))));
|
|
56
45
|
recoverReads(runtime);
|
|
57
|
-
statusShown(runtime);
|
|
58
46
|
}
|
|
59
|
-
await
|
|
47
|
+
await unpair(runtime);
|
|
60
48
|
await eraseFenced(runtime, fresh);
|
|
61
49
|
}
|
package/dist/media.d.ts
CHANGED
|
@@ -3,6 +3,6 @@ import { type ShownAnswer } from './outcome.js';
|
|
|
3
3
|
export declare const ROOM_MEDIA = "room-media";
|
|
4
4
|
type Show = (room: string, path: string, revision?: string) => Promise<ShownAnswer>;
|
|
5
5
|
export declare function shownBy(show: Show, client: MdRuntimeClient): MdRuntimeClient;
|
|
6
|
-
export declare function defineRoomMedia(client: Promise<MdRuntimeClient> | MdRuntimeClient
|
|
6
|
+
export declare function defineRoomMedia(client: Promise<MdRuntimeClient> | MdRuntimeClient): void;
|
|
7
7
|
export {};
|
|
8
8
|
//# sourceMappingURL=media.d.ts.map
|
package/dist/media.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAEnE,eAAO,MAAM,UAAU,eAAe,CAAC;AAwBvC,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAIpF,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe,CAG5E;AAsBD,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,GAAG,IAAI,CAsLxF"}
|
package/dist/media.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isAudioType, isImageType, isVideoType } from '@agentshouse/mdmodel';
|
|
2
|
+
import { blobOf, UNCERTAIN } from './outcome.js';
|
|
2
3
|
export const ROOM_MEDIA = 'room-media';
|
|
3
4
|
const ATTRIBUTES = ['room', 'path', 'revision', 'width', 'height', 'alt'];
|
|
4
5
|
const LOADING = new Set(['room', 'path', 'revision']);
|
|
@@ -29,16 +30,16 @@ function refusedForGood(shown) {
|
|
|
29
30
|
return (shown.kind === 'rejected' || shown.kind === 'scoped-refusal') && !shown.retryable;
|
|
30
31
|
}
|
|
31
32
|
function drawnFor(mediaType) {
|
|
32
|
-
if (mediaType
|
|
33
|
+
if (isImageType(mediaType))
|
|
33
34
|
return 'img';
|
|
34
|
-
if (mediaType
|
|
35
|
+
if (isVideoType(mediaType))
|
|
35
36
|
return 'video';
|
|
36
|
-
if (mediaType
|
|
37
|
+
if (isAudioType(mediaType))
|
|
37
38
|
return 'audio';
|
|
38
39
|
return null;
|
|
39
40
|
}
|
|
40
|
-
export function defineRoomMedia(client
|
|
41
|
-
if (
|
|
41
|
+
export function defineRoomMedia(client) {
|
|
42
|
+
if (customElements.get(ROOM_MEDIA) !== undefined)
|
|
42
43
|
return;
|
|
43
44
|
const connected = Promise.resolve(client);
|
|
44
45
|
class RoomMedia extends HTMLElement {
|
|
@@ -129,11 +130,7 @@ export function defineRoomMedia(client, registry = customElements) {
|
|
|
129
130
|
this.#unshown(asked);
|
|
130
131
|
return;
|
|
131
132
|
}
|
|
132
|
-
const copy = await
|
|
133
|
-
headers: { 'content-type': shown.mediaType },
|
|
134
|
-
})
|
|
135
|
-
.blob()
|
|
136
|
-
.catch(() => null);
|
|
133
|
+
const copy = await blobOf(shown).catch(() => null);
|
|
137
134
|
if (asked !== this.#asked)
|
|
138
135
|
return;
|
|
139
136
|
if (copy === null)
|
|
@@ -179,7 +176,7 @@ export function defineRoomMedia(client, registry = customElements) {
|
|
|
179
176
|
if (drawn instanceof HTMLMediaElement) {
|
|
180
177
|
drawn.controls = true;
|
|
181
178
|
drawn.preload = 'metadata';
|
|
182
|
-
if (drawn instanceof HTMLVideoElement)
|
|
179
|
+
if (drawn instanceof HTMLVideoElement && 'playsInline' in drawn)
|
|
183
180
|
drawn.playsInline = true;
|
|
184
181
|
}
|
|
185
182
|
drawn.addEventListener(drawn instanceof HTMLImageElement ? 'load' : 'loadedmetadata', () => {
|
|
@@ -214,5 +211,5 @@ export function defineRoomMedia(client, registry = customElements) {
|
|
|
214
211
|
void this.#load();
|
|
215
212
|
}
|
|
216
213
|
}
|
|
217
|
-
|
|
214
|
+
customElements.define(ROOM_MEDIA, RoomMedia);
|
|
218
215
|
}
|
package/dist/memory.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { type VerifiedModel } from '@agentshouse/mdmodel';
|
|
1
2
|
import type { ModelResult } from './model.js';
|
|
2
|
-
import { type AcceptedMessage, type ActionResult, type Adapter, type BinaryFile, type Capability, type ConversationAction, type ConversationEvent, type DiscoveredRoom, type SavedFacts, type HeadChange, type ListedAgent, type ListedConversation, type Member, type ProviderLimit, type Retention, type ServiceMode, type TypedPath } from './adapter.js';
|
|
3
|
-
export type MemoryRoom = DiscoveredRoom & {
|
|
3
|
+
import { type AcceptedMessage, type ActionResult, type Adapter, type BinaryFile, type Capability, type ConversationAction, type ConversationEvent, type DiscoveredRoom, type SavedFacts, type HeadChange, type ListedAgent, type ListedConversation, type Member, type ProviderLimit, type Retention, type ServiceMode, type TypedPath, type TypedSelection } from './adapter.js';
|
|
4
|
+
export type MemoryRoom = Omit<DiscoveredRoom, 'typedSelection' | 'authoredPaths'> & {
|
|
5
|
+
typedSelection?: TypedSelection | null;
|
|
6
|
+
authoredPaths?: readonly string[];
|
|
4
7
|
model?: ModelResult;
|
|
5
8
|
documents?: Readonly<Record<string, string>>;
|
|
6
9
|
facts?: Readonly<Record<string, SavedFacts>>;
|
|
@@ -29,7 +32,7 @@ export type MemoryAdapterOptions = {
|
|
|
29
32
|
retention?: Retention;
|
|
30
33
|
member?: Member;
|
|
31
34
|
unopened?: boolean;
|
|
32
|
-
roomTypes?:
|
|
35
|
+
roomTypes?: VerifiedModel;
|
|
33
36
|
typedPaths?: readonly TypedPath[];
|
|
34
37
|
};
|
|
35
38
|
export type MemoryAdapter = Adapter & {
|
|
@@ -37,6 +40,7 @@ export type MemoryAdapter = Adapter & {
|
|
|
37
40
|
refresh: NonNullable<Adapter['refresh']>;
|
|
38
41
|
setRooms(rooms: readonly MemoryRoom[]): void;
|
|
39
42
|
setConversations(conversations: readonly MemoryConversation[]): void;
|
|
43
|
+
setAgents(agents: readonly ListedAgent[]): void;
|
|
40
44
|
script(operation: keyof Adapter, answer: unknown): void;
|
|
41
45
|
open(): void;
|
|
42
46
|
close(closing?: {
|
package/dist/memory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG9F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EACL,KAAK,eAAe,EAEpB,KAAK,YAAY,EACjB,KAAK,OAAO,EAIZ,KAAK,UAAU,EAMf,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EAKtB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,UAAU,EAGf,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,MAAM,EAGX,KAAK,aAAa,EAIlB,KAAK,SAAS,EAGd,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AAwBtB,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,gBAAgB,GAAG,eAAe,CAAC,GAAG;IAClF,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7C,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAC7C,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/C,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,cAAc,GAAG,QAAQ,CAAC,CAAC;IAC7D,QAAQ,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,GAAG,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;CAC1E,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9B,aAAa,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC9C,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACrC,cAAc,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,UAAU,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG;IACpC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3C,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,IAAI,CAAC;IAC7C,gBAAgB,CAAC,aAAa,EAAE,SAAS,kBAAkB,EAAE,GAAG,IAAI,CAAC;IACrE,SAAS,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,IAAI,CAAC;IAChD,MAAM,CAAC,SAAS,EAAE,MAAM,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACxD,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACzF,MAAM,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1C,iBAAiB,CAAC,YAAY,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChF,sBAAsB,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC3D,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnD,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3C,SAAS,IAAI,SAAS,MAAM,EAAE,CAAC;IAC/B,uBAAuB,IAAI,SAAS,MAAM,EAAE,CAAC;IAC7C,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAAC;CACzC,CAAC;AA0CF,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,oBAAyB,GAAG,aAAa,CAmrBrF"}
|