@agentshouse/mdruntime 0.1.0-caee7332d2235 → 0.1.0-caf080a9a9c60
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 +19 -16
- package/dist/acceptance.d.ts +3 -0
- package/dist/acceptance.d.ts.map +1 -0
- package/dist/acceptance.js +318 -0
- package/dist/act-lanes.d.ts +29 -0
- package/dist/act-lanes.d.ts.map +1 -0
- package/dist/act-lanes.js +177 -0
- package/dist/actions.d.ts +25 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +261 -0
- package/dist/adapter.d.ts +162 -122
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts +7 -10
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +40 -41
- package/dist/binary.d.ts +0 -5
- package/dist/binary.d.ts.map +1 -1
- package/dist/binary.js +1 -1
- package/dist/bootstrap.d.ts +30 -11
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +309 -113
- package/dist/cell.d.ts +6 -0
- package/dist/cell.d.ts.map +1 -0
- package/dist/cell.js +9 -0
- package/dist/chain.d.ts +12 -0
- package/dist/chain.d.ts.map +1 -0
- package/dist/chain.js +64 -0
- package/dist/change-set.d.ts +10 -16
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +17 -94
- package/dist/change.d.ts +32 -1
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +14 -3
- package/dist/chat-types.d.ts +5 -0
- package/dist/chat-types.d.ts.map +1 -0
- package/dist/chat-types.js +13 -0
- package/dist/client.d.ts +33 -19
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +112 -21
- package/dist/collection.d.ts +29 -22
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +47 -354
- package/dist/compile.d.ts +18 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +724 -0
- package/dist/connection.d.ts +7 -137
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +111 -3623
- package/dist/context.d.ts +2 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/{chat/context.js → context.js} +1 -4
- package/dist/conversation-live.d.ts +138 -0
- package/dist/conversation-live.d.ts.map +1 -0
- package/dist/conversation-live.js +249 -0
- package/dist/conversation-row.d.ts +33 -0
- package/dist/conversation-row.d.ts.map +1 -0
- package/dist/conversation-row.js +53 -0
- package/dist/conversation.d.ts +66 -49
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +962 -799
- package/dist/declaration.d.ts +10 -0
- package/dist/declaration.d.ts.map +1 -0
- package/dist/declaration.js +24 -0
- package/dist/digest.d.ts +7 -0
- package/dist/digest.d.ts.map +1 -0
- package/dist/digest.js +113 -0
- package/dist/discovery.d.ts +10 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +153 -0
- package/dist/durability.d.ts +19 -4
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +5 -0
- package/dist/entry.d.ts +5 -2
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +33 -29
- 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 +49 -0
- package/dist/figures.d.ts.map +1 -0
- package/dist/figures.js +197 -0
- package/dist/file.d.ts +2 -19
- package/dist/file.d.ts.map +1 -1
- package/dist/file.js +7 -122
- 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 +20 -8
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +103 -45
- package/dist/identity.d.ts +0 -2
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +0 -6
- package/dist/index.d.ts +39 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -4
- package/dist/install.d.ts +54 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +539 -0
- package/dist/lifecycle.d.ts +7 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +279 -0
- package/dist/listing.d.ts +48 -0
- package/dist/listing.d.ts.map +1 -0
- package/dist/listing.js +139 -0
- package/dist/live.d.ts +23 -0
- package/dist/live.d.ts.map +1 -0
- package/dist/live.js +165 -0
- package/dist/locks.d.ts +7 -0
- package/dist/locks.d.ts.map +1 -0
- package/dist/locks.js +33 -0
- package/dist/log.d.ts +1 -0
- package/dist/log.d.ts.map +1 -1
- package/dist/lost.d.ts +5 -0
- package/dist/lost.d.ts.map +1 -0
- package/dist/lost.js +50 -0
- package/dist/media.d.ts +8 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/media.js +218 -0
- package/dist/memory.d.ts +17 -7
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +272 -118
- package/dist/messages.d.ts +49 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +150 -0
- package/dist/model.d.ts +8 -11
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +6 -23
- package/dist/models.d.ts +10 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +156 -0
- package/dist/name.d.ts +4 -0
- package/dist/name.d.ts.map +1 -0
- package/dist/name.js +122 -0
- package/dist/observation.d.ts +15 -2
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +98 -14
- package/dist/opened.d.ts +22 -0
- package/dist/opened.d.ts.map +1 -0
- package/dist/opened.js +107 -0
- package/dist/opening.d.ts +4 -0
- package/dist/opening.d.ts.map +1 -0
- package/dist/opening.js +59 -0
- package/dist/outcome.d.ts +47 -9
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +56 -2
- package/dist/overlay.d.ts +7 -5
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +69 -169
- 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 -0
- package/dist/parts.d.ts.map +1 -0
- package/dist/parts.js +10 -0
- package/dist/paths.d.ts +2 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +26 -0
- package/dist/preparation.d.ts +20 -0
- package/dist/preparation.d.ts.map +1 -0
- package/dist/preparation.js +233 -0
- 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 +16 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +285 -0
- package/dist/query.d.ts +21 -207
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -493
- package/dist/{chat/questions.d.ts → questions.d.ts} +5 -7
- package/dist/questions.d.ts.map +1 -0
- package/dist/{chat/questions.js → questions.js} +11 -7
- package/dist/queue.d.ts +40 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +465 -0
- package/dist/reach.d.ts +20 -9
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +306 -111
- package/dist/react.d.ts +15 -2
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +33 -1
- package/dist/{chat/read.d.ts → read.d.ts} +2 -0
- package/dist/read.d.ts.map +1 -0
- package/dist/{chat/read.js → read.js} +4 -0
- package/dist/readiness.d.ts +13 -17
- package/dist/readiness.d.ts.map +1 -1
- package/dist/readiness.js +2 -8
- package/dist/reads.d.ts +38 -10
- package/dist/reads.d.ts.map +1 -1
- package/dist/reads.js +163 -83
- package/dist/recovery.d.ts +5 -2
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +65 -8
- package/dist/refresh.d.ts +18 -15
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +145 -79
- package/dist/refusal.d.ts +5 -0
- package/dist/refusal.d.ts.map +1 -0
- package/dist/refusal.js +57 -0
- package/dist/replica.d.ts +50 -39
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +319 -208
- 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 +28 -11
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +194 -117
- package/dist/room-drafts.d.ts +24 -0
- package/dist/room-drafts.d.ts.map +1 -0
- package/dist/room-drafts.js +217 -0
- package/dist/rows.d.ts +31 -31
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +60 -125
- package/dist/runtime.d.ts +36 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +1 -0
- package/dist/save.d.ts +43 -50
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +661 -228
- package/dist/saves.d.ts +32 -0
- package/dist/saves.d.ts.map +1 -0
- package/dist/saves.js +413 -0
- package/dist/search.d.ts +12 -95
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +10 -266
- package/dist/seed.d.ts +11 -2
- package/dist/seed.d.ts.map +1 -1
- package/dist/seed.js +71 -1
- package/dist/shared.d.ts +4 -9
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +61 -120
- package/dist/shown.d.ts +32 -0
- package/dist/shown.d.ts.map +1 -0
- package/dist/shown.js +290 -0
- package/dist/socket/admission.d.ts +7 -0
- package/dist/socket/admission.d.ts.map +1 -0
- package/dist/socket/admission.js +39 -0
- package/dist/socket/answers.d.ts +6 -0
- package/dist/socket/answers.d.ts.map +1 -0
- package/dist/socket/answers.js +20 -0
- package/dist/socket/lanes.d.ts +21 -0
- package/dist/socket/lanes.d.ts.map +1 -0
- package/dist/socket/lanes.js +80 -0
- package/dist/socket/reads.d.ts +10 -0
- package/dist/socket/reads.d.ts.map +1 -0
- package/dist/socket/reads.js +31 -0
- package/dist/socket/session.d.ts +38 -0
- package/dist/socket/session.d.ts.map +1 -0
- package/dist/socket/session.js +23 -0
- package/dist/socket.d.ts +68 -0
- package/dist/socket.d.ts.map +1 -0
- package/dist/socket.js +171 -0
- package/dist/source.d.ts +54 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +82 -0
- package/dist/status.d.ts +4 -5
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +3 -7
- package/dist/store/installs.d.ts +30 -0
- package/dist/store/installs.d.ts.map +1 -0
- package/dist/store/installs.js +34 -0
- package/dist/store/readiness.d.ts +10 -0
- package/dist/store/readiness.d.ts.map +1 -0
- package/dist/store/readiness.js +52 -0
- package/dist/store/records.d.ts +212 -0
- package/dist/store/records.d.ts.map +1 -0
- package/dist/store/records.js +430 -0
- package/dist/store/room-held.d.ts +8 -0
- package/dist/store/room-held.d.ts.map +1 -0
- package/dist/store/room-held.js +17 -0
- package/dist/store/space.d.ts +11 -0
- package/dist/store/space.d.ts.map +1 -0
- package/dist/store/space.js +41 -0
- package/dist/store/watchers.d.ts +17 -0
- package/dist/store/watchers.d.ts.map +1 -0
- package/dist/store/watchers.js +56 -0
- package/dist/store/writes.d.ts +24 -0
- package/dist/store/writes.d.ts.map +1 -0
- package/dist/store/writes.js +125 -0
- package/dist/store.d.ts +111 -166
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +158 -797
- package/dist/stored.d.ts +156 -0
- package/dist/stored.d.ts.map +1 -0
- package/dist/stored.js +649 -0
- package/dist/surface.d.ts +88 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +223 -0
- package/dist/sync.d.ts +19 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +540 -0
- package/dist/tables.d.ts +412 -0
- package/dist/tables.d.ts.map +1 -0
- package/dist/tables.js +737 -0
- package/dist/tallies.d.ts +18 -0
- package/dist/tallies.d.ts.map +1 -0
- package/dist/tallies.js +129 -0
- package/dist/transfer.d.ts +0 -5
- package/dist/transfer.d.ts.map +1 -1
- package/dist/turn.d.ts +1 -1
- package/dist/turn.d.ts.map +1 -1
- package/dist/turn.js +31 -20
- package/dist/validation.d.ts +29 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +104 -0
- package/dist/windows.d.ts +1 -16
- package/dist/windows.d.ts.map +1 -1
- package/dist/windows.js +2 -79
- package/dist/wire.d.ts +72 -8
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +24 -5
- package/package.json +19 -19
- package/AGENTS.md +0 -299
- package/dist/attempt.d.ts +0 -16
- package/dist/attempt.d.ts.map +0 -1
- package/dist/attempt.js +0 -70
- package/dist/chat/acts.d.ts +0 -33
- package/dist/chat/acts.d.ts.map +0 -1
- package/dist/chat/acts.js +0 -36
- package/dist/chat/context.d.ts +0 -3
- package/dist/chat/context.d.ts.map +0 -1
- package/dist/chat/earlier.d.ts +0 -10
- package/dist/chat/earlier.d.ts.map +0 -1
- package/dist/chat/earlier.js +0 -54
- package/dist/chat/input.d.ts +0 -9
- package/dist/chat/input.d.ts.map +0 -1
- package/dist/chat/input.js +0 -99
- package/dist/chat/kit.d.ts +0 -61
- package/dist/chat/kit.d.ts.map +0 -1
- package/dist/chat/kit.js +0 -123
- package/dist/chat/lasting.d.ts +0 -6
- package/dist/chat/lasting.d.ts.map +0 -1
- package/dist/chat/lasting.js +0 -19
- package/dist/chat/list.d.ts +0 -27
- package/dist/chat/list.d.ts.map +0 -1
- package/dist/chat/list.js +0 -99
- package/dist/chat/markdown.d.ts +0 -21
- package/dist/chat/markdown.d.ts.map +0 -1
- package/dist/chat/markdown.js +0 -246
- package/dist/chat/message.d.ts +0 -6
- package/dist/chat/message.d.ts.map +0 -1
- package/dist/chat/message.js +0 -192
- package/dist/chat/messages.d.ts +0 -22
- package/dist/chat/messages.d.ts.map +0 -1
- package/dist/chat/messages.js +0 -171
- package/dist/chat/name.d.ts +0 -6
- package/dist/chat/name.d.ts.map +0 -1
- package/dist/chat/name.js +0 -37
- package/dist/chat/opened.d.ts +0 -11
- package/dist/chat/opened.d.ts.map +0 -1
- package/dist/chat/opened.js +0 -17
- package/dist/chat/overlay.d.ts +0 -31
- package/dist/chat/overlay.d.ts.map +0 -1
- package/dist/chat/overlay.js +0 -97
- package/dist/chat/parts.d.ts +0 -57
- package/dist/chat/parts.d.ts.map +0 -1
- package/dist/chat/parts.js +0 -119
- package/dist/chat/pieces.d.ts +0 -62
- package/dist/chat/pieces.d.ts.map +0 -1
- package/dist/chat/pieces.js +0 -1110
- package/dist/chat/process.d.ts +0 -20
- package/dist/chat/process.d.ts.map +0 -1
- package/dist/chat/process.js +0 -32
- package/dist/chat/provider.d.ts +0 -63
- package/dist/chat/provider.d.ts.map +0 -1
- package/dist/chat/provider.js +0 -630
- package/dist/chat/question.d.ts +0 -9
- package/dist/chat/question.d.ts.map +0 -1
- package/dist/chat/question.js +0 -69
- package/dist/chat/questions.d.ts.map +0 -1
- package/dist/chat/read.d.ts.map +0 -1
- package/dist/chat/ready.d.ts +0 -34
- package/dist/chat/ready.d.ts.map +0 -1
- package/dist/chat/ready.js +0 -91
- package/dist/chat/steady.d.ts +0 -3
- package/dist/chat/steady.d.ts.map +0 -1
- package/dist/chat/steady.js +0 -26
- package/dist/chat/style.d.ts +0 -4
- package/dist/chat/style.d.ts.map +0 -1
- package/dist/chat/style.js +0 -302
- package/dist/chat.d.ts +0 -14
- package/dist/chat.d.ts.map +0 -1
- package/dist/chat.js +0 -8
- package/dist/fence.d.ts +0 -6
- package/dist/fence.d.ts.map +0 -1
- package/dist/fence.js +0 -10
- package/dist/read-side.d.ts +0 -27
- package/dist/read-side.d.ts.map +0 -1
- package/dist/read-side.js +0 -826
package/dist/overlay.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { apply, frontmatterValue, parse, serialize, } from '@agentshouse/mdmodel';
|
|
2
|
-
import {
|
|
1
|
+
import { apply, create, frontmatterValue, parse, serialize, TYPE_FIELD, } from '@agentshouse/mdmodel';
|
|
2
|
+
import { definitionsAt } from './collection.js';
|
|
3
|
+
import { drafted, entriesIn, settling } from './shared.js';
|
|
3
4
|
import { ROW_WEIGHT } from './turn.js';
|
|
4
|
-
export function acceptedBinaries(files) {
|
|
5
|
-
|
|
5
|
+
export function* acceptedBinaries(files) {
|
|
6
|
+
for (const [path, file] of entriesIn(files))
|
|
7
|
+
yield [path, { state: 'accepted', ...file }];
|
|
6
8
|
}
|
|
7
9
|
export function sameBinary(left, right) {
|
|
8
10
|
if (left === undefined || right === undefined)
|
|
@@ -12,7 +14,7 @@ export function sameBinary(left, right) {
|
|
|
12
14
|
left.mediaType === right.mediaType &&
|
|
13
15
|
left.sha256 === right.sha256 &&
|
|
14
16
|
(left.state === 'accepted'
|
|
15
|
-
? right.state === 'accepted'
|
|
17
|
+
? right.state === 'accepted'
|
|
16
18
|
: right.state === 'pending' && left.localId === right.localId));
|
|
17
19
|
}
|
|
18
20
|
export function sameChange(left, right) {
|
|
@@ -23,7 +25,6 @@ export function sameChange(left, right) {
|
|
|
23
25
|
left.author?.id === right.author?.id &&
|
|
24
26
|
left.author?.name === right.author?.name);
|
|
25
27
|
}
|
|
26
|
-
const EMPTY_FRONTMATTER = '---\n---\n';
|
|
27
28
|
function isPart(change) {
|
|
28
29
|
return change.kind === 'field' || change.kind === 'section' || change.kind === 'preamble';
|
|
29
30
|
}
|
|
@@ -52,16 +53,27 @@ function* priorsOf(preconditions) {
|
|
|
52
53
|
preamble: (path) => preambles.get(path) ?? '',
|
|
53
54
|
};
|
|
54
55
|
}
|
|
55
|
-
function
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
56
|
+
export function composed(path, fields, sections, composition) {
|
|
57
|
+
const declared = fields[TYPE_FIELD];
|
|
58
|
+
const type = typeof declared === 'string' && declared !== '' ? declared : undefined;
|
|
59
|
+
const definition = definitionsAt(composition, path)(type);
|
|
60
|
+
return apply(create(type, definition), [
|
|
61
|
+
...Object.entries(fields).flatMap(([name, value]) => (name !== TYPE_FIELD || type === undefined) && frontmatterValue(value)
|
|
62
|
+
? [{ kind: 'field', name, value, prior: undefined }]
|
|
63
|
+
: []),
|
|
64
|
+
...Object.entries(sections).map(([name, value]) => ({
|
|
65
|
+
kind: 'section',
|
|
66
|
+
name,
|
|
67
|
+
value,
|
|
68
|
+
prior: undefined,
|
|
69
|
+
})),
|
|
70
|
+
], definition);
|
|
71
|
+
}
|
|
72
|
+
export function compose(path, fields, sections, composition) {
|
|
73
|
+
const next = composed(path, fields, sections, composition);
|
|
74
|
+
if (next.outcome !== 'applied')
|
|
75
|
+
throw new Error(`the creation of ${path} writes no document`);
|
|
76
|
+
return serialize(next.document);
|
|
65
77
|
}
|
|
66
78
|
function edited(change, priors) {
|
|
67
79
|
if (change.kind === 'field')
|
|
@@ -80,17 +92,19 @@ function edited(change, priors) {
|
|
|
80
92
|
prior: priors.section(change.path, change.name),
|
|
81
93
|
};
|
|
82
94
|
}
|
|
83
|
-
function edit(staged, changes, priors) {
|
|
95
|
+
function edit(staged, changes, priors, composition) {
|
|
84
96
|
const path = changes[0].path;
|
|
85
97
|
delete staged.revisions[path];
|
|
86
98
|
const text = staged.documents[path];
|
|
87
99
|
if (text === undefined)
|
|
88
100
|
return changes.length;
|
|
89
|
-
const
|
|
101
|
+
const definitions = definitionsAt(composition, path);
|
|
102
|
+
const parsed = parse(text, path, definitions);
|
|
90
103
|
if (!parsed.ok)
|
|
91
104
|
return changes.length;
|
|
105
|
+
const definition = definitions(parsed.document.type);
|
|
92
106
|
const wanted = changes.map((change) => edited(change, priors));
|
|
93
|
-
const first = apply(parsed.document, wanted);
|
|
107
|
+
const first = apply(parsed.document, wanted, definition);
|
|
94
108
|
if (first.outcome === 'refuse')
|
|
95
109
|
return changes.length;
|
|
96
110
|
if (first.outcome === 'applied') {
|
|
@@ -99,7 +113,7 @@ function edit(staged, changes, priors) {
|
|
|
99
113
|
}
|
|
100
114
|
const stale = new Set(first.stale);
|
|
101
115
|
const kept = wanted.filter((_, at) => !stale.has(at));
|
|
102
|
-
const rest = apply(parsed.document, kept);
|
|
116
|
+
const rest = apply(parsed.document, kept, definition);
|
|
103
117
|
if (rest.outcome !== 'applied')
|
|
104
118
|
return changes.length;
|
|
105
119
|
staged.documents[path] = serialize(rest.document);
|
|
@@ -124,16 +138,21 @@ function relocate(staged, from, to) {
|
|
|
124
138
|
function moveHead(heads, from, to) {
|
|
125
139
|
const revision = heads.revisions[from];
|
|
126
140
|
const fileId = heads.fileIds[from];
|
|
141
|
+
const created = heads.created[from];
|
|
127
142
|
const change = heads.changes[from];
|
|
128
143
|
delete heads.revisions[from];
|
|
129
144
|
delete heads.fileIds[from];
|
|
145
|
+
delete heads.created[from];
|
|
130
146
|
delete heads.changes[from];
|
|
131
147
|
delete heads.fileIds[to];
|
|
148
|
+
delete heads.created[to];
|
|
132
149
|
delete heads.changes[to];
|
|
133
150
|
if (revision !== undefined)
|
|
134
151
|
heads.revisions[to] = revision;
|
|
135
152
|
if (fileId !== undefined)
|
|
136
153
|
heads.fileIds[to] = fileId;
|
|
154
|
+
if (created !== undefined)
|
|
155
|
+
heads.created[to] = created;
|
|
137
156
|
if (change !== undefined)
|
|
138
157
|
heads.changes[to] = change;
|
|
139
158
|
}
|
|
@@ -141,14 +160,18 @@ function erase(staged, path) {
|
|
|
141
160
|
delete staged.documents[path];
|
|
142
161
|
delete staged.revisions[path];
|
|
143
162
|
delete staged.fileIds[path];
|
|
163
|
+
delete staged.created[path];
|
|
144
164
|
delete staged.changes[path];
|
|
145
165
|
delete staged.binaries[path];
|
|
146
166
|
}
|
|
147
|
-
function stage(staged, change) {
|
|
167
|
+
function stage(staged, change, composition) {
|
|
148
168
|
if (change.kind === 'create') {
|
|
149
169
|
staged.documents[change.path] =
|
|
150
|
-
'content' in change
|
|
170
|
+
'content' in change
|
|
171
|
+
? change.content
|
|
172
|
+
: compose(change.path, change.fields, change.sections, composition);
|
|
151
173
|
delete staged.fileIds[change.path];
|
|
174
|
+
delete staged.created[change.path];
|
|
152
175
|
delete staged.changes[change.path];
|
|
153
176
|
return true;
|
|
154
177
|
}
|
|
@@ -176,15 +199,35 @@ function stage(staged, change) {
|
|
|
176
199
|
if (change.kind === 'move') {
|
|
177
200
|
return relocate(staged, change.path, change.to);
|
|
178
201
|
}
|
|
202
|
+
if (change.kind === 'arrival') {
|
|
203
|
+
erase(staged, change.path);
|
|
204
|
+
if ('content' in change)
|
|
205
|
+
staged.documents[change.path] = change.content;
|
|
206
|
+
else
|
|
207
|
+
staged.binaries[change.path] = { state: 'accepted', ...change.binary };
|
|
208
|
+
arrive(staged, change);
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
179
211
|
erase(staged, change.path);
|
|
180
212
|
return true;
|
|
181
213
|
}
|
|
182
|
-
|
|
214
|
+
function arrive(heads, change) {
|
|
215
|
+
if (change.revision !== undefined)
|
|
216
|
+
heads.revisions[change.path] = change.revision;
|
|
217
|
+
if (change.fileId !== undefined)
|
|
218
|
+
heads.fileIds[change.path] = change.fileId;
|
|
219
|
+
if (change.created !== undefined)
|
|
220
|
+
heads.created[change.path] = change.created;
|
|
221
|
+
if (change.change !== undefined)
|
|
222
|
+
heads.changes[change.path] = change.change;
|
|
223
|
+
}
|
|
224
|
+
export function* overlaying(base, queue, composition, unapplied) {
|
|
183
225
|
const staged = {
|
|
184
226
|
documents: drafted(base.documents),
|
|
185
227
|
binaries: drafted(base.binaries),
|
|
186
228
|
revisions: drafted(base.revisions),
|
|
187
229
|
fileIds: drafted(base.fileIds),
|
|
230
|
+
created: drafted(base.created),
|
|
188
231
|
changes: drafted(base.changes),
|
|
189
232
|
};
|
|
190
233
|
for (const batch of queue) {
|
|
@@ -192,7 +235,7 @@ export function* overlaying(base, queue, unapplied) {
|
|
|
192
235
|
for (let index = 0; index < batch.changes.length; index += 1) {
|
|
193
236
|
const change = batch.changes[index];
|
|
194
237
|
if (!isPart(change)) {
|
|
195
|
-
if (!stage(staged, change))
|
|
238
|
+
if (!stage(staged, change, composition))
|
|
196
239
|
unapplied?.();
|
|
197
240
|
yield ROW_WEIGHT;
|
|
198
241
|
continue;
|
|
@@ -206,7 +249,7 @@ export function* overlaying(base, queue, unapplied) {
|
|
|
206
249
|
index += 1;
|
|
207
250
|
}
|
|
208
251
|
const text = staged.documents[change.path] ?? '';
|
|
209
|
-
for (let left = edit(staged, run, priors); left > 0; left -= 1)
|
|
252
|
+
for (let left = edit(staged, run, priors, composition); left > 0; left -= 1)
|
|
210
253
|
unapplied?.();
|
|
211
254
|
yield ROW_WEIGHT + text.length;
|
|
212
255
|
}
|
|
@@ -216,150 +259,7 @@ export function* overlaying(base, queue, unapplied) {
|
|
|
216
259
|
binaries: yield* settling(staged.binaries),
|
|
217
260
|
revisions: yield* settling(staged.revisions),
|
|
218
261
|
fileIds: yield* settling(staged.fileIds),
|
|
262
|
+
created: yield* settling(staged.created),
|
|
219
263
|
changes: yield* settling(staged.changes),
|
|
220
264
|
};
|
|
221
265
|
}
|
|
222
|
-
function* pathsOf(batch) {
|
|
223
|
-
const paths = new Set();
|
|
224
|
-
for (const change of batch.changes) {
|
|
225
|
-
paths.add(change.path);
|
|
226
|
-
if (change.kind === 'move')
|
|
227
|
-
paths.add(change.to);
|
|
228
|
-
yield ROW_WEIGHT;
|
|
229
|
-
}
|
|
230
|
-
return paths;
|
|
231
|
-
}
|
|
232
|
-
export function* sameText(left, right) {
|
|
233
|
-
return ((yield* differences(left.documents, right.documents)).size === 0 &&
|
|
234
|
-
(yield* differences(left.binaries, right.binaries, sameBinary)).size === 0);
|
|
235
|
-
}
|
|
236
|
-
export function* changedPaths(left, right) {
|
|
237
|
-
return new Set([
|
|
238
|
-
...(yield* differences(left.documents, right.documents)),
|
|
239
|
-
...(yield* differences(left.revisions, right.revisions)),
|
|
240
|
-
...(yield* differences(left.fileIds, right.fileIds)),
|
|
241
|
-
...(yield* differences(left.changes, right.changes, sameChange)),
|
|
242
|
-
...(yield* differences(left.binaries, right.binaries, sameBinary)),
|
|
243
|
-
]);
|
|
244
|
-
}
|
|
245
|
-
function* sameItems(left, right) {
|
|
246
|
-
if (left.length !== right.length)
|
|
247
|
-
return false;
|
|
248
|
-
for (let index = 0; index < left.length; index += 1) {
|
|
249
|
-
const item = JSON.stringify(left[index]);
|
|
250
|
-
if (item !== JSON.stringify(right[index]))
|
|
251
|
-
return false;
|
|
252
|
-
yield ROW_WEIGHT + item.length;
|
|
253
|
-
}
|
|
254
|
-
return true;
|
|
255
|
-
}
|
|
256
|
-
function* sameBatch(left, right) {
|
|
257
|
-
if (left === right)
|
|
258
|
-
return true;
|
|
259
|
-
const { changes, preconditions, ...rest } = left;
|
|
260
|
-
const { changes: others, preconditions: priors, ...held } = right;
|
|
261
|
-
return (JSON.stringify(rest) === JSON.stringify(held) &&
|
|
262
|
-
(yield* sameItems(changes, others)) &&
|
|
263
|
-
(yield* sameItems(preconditions, priors)));
|
|
264
|
-
}
|
|
265
|
-
function* replayHeads(base, batch) {
|
|
266
|
-
const heads = {
|
|
267
|
-
revisions: drafted(base.revisions),
|
|
268
|
-
fileIds: drafted(base.fileIds),
|
|
269
|
-
changes: drafted(base.changes),
|
|
270
|
-
};
|
|
271
|
-
for (const change of batch.changes) {
|
|
272
|
-
if (change.kind === 'remove') {
|
|
273
|
-
delete heads.revisions[change.path];
|
|
274
|
-
delete heads.fileIds[change.path];
|
|
275
|
-
delete heads.changes[change.path];
|
|
276
|
-
}
|
|
277
|
-
else if (change.kind === 'create') {
|
|
278
|
-
delete heads.fileIds[change.path];
|
|
279
|
-
delete heads.changes[change.path];
|
|
280
|
-
}
|
|
281
|
-
else if (change.kind === 'replace' ||
|
|
282
|
-
change.kind === 'field' ||
|
|
283
|
-
change.kind === 'section' ||
|
|
284
|
-
change.kind === 'preamble') {
|
|
285
|
-
delete heads.revisions[change.path];
|
|
286
|
-
}
|
|
287
|
-
else if (change.kind === 'binary') {
|
|
288
|
-
delete heads.revisions[change.path];
|
|
289
|
-
delete heads.changes[change.path];
|
|
290
|
-
}
|
|
291
|
-
else if (change.kind === 'move') {
|
|
292
|
-
moveHead(heads, change.path, change.to);
|
|
293
|
-
}
|
|
294
|
-
yield ROW_WEIGHT;
|
|
295
|
-
}
|
|
296
|
-
return {
|
|
297
|
-
revisions: yield* settling(heads.revisions),
|
|
298
|
-
fileIds: yield* settling(heads.fileIds),
|
|
299
|
-
changes: yield* settling(heads.changes),
|
|
300
|
-
};
|
|
301
|
-
}
|
|
302
|
-
function* repatched(held, paths, value) {
|
|
303
|
-
const set = [];
|
|
304
|
-
const removed = [];
|
|
305
|
-
for (const path of paths) {
|
|
306
|
-
const found = value(path);
|
|
307
|
-
if (found === undefined)
|
|
308
|
-
removed.push(path);
|
|
309
|
-
else
|
|
310
|
-
set.push([path, found]);
|
|
311
|
-
yield ROW_WEIGHT;
|
|
312
|
-
}
|
|
313
|
-
return yield* patching(held, set, removed);
|
|
314
|
-
}
|
|
315
|
-
export function* overlayChanged(base, batch, previousBase, previousBatch, previousVisible) {
|
|
316
|
-
const same = yield* sameBatch(batch, previousBatch);
|
|
317
|
-
if (same && (yield* sameText(base, previousBase))) {
|
|
318
|
-
return {
|
|
319
|
-
documents: previousVisible.documents,
|
|
320
|
-
binaries: previousVisible.binaries,
|
|
321
|
-
...(yield* replayHeads(base, batch)),
|
|
322
|
-
};
|
|
323
|
-
}
|
|
324
|
-
const affected = new Set(yield* changedPaths(base, previousBase));
|
|
325
|
-
const touched = yield* pathsOf(batch);
|
|
326
|
-
let replayed = !same;
|
|
327
|
-
if (replayed)
|
|
328
|
-
for (const path of yield* pathsOf(previousBatch))
|
|
329
|
-
affected.add(path);
|
|
330
|
-
for (const path of touched) {
|
|
331
|
-
if (affected.has(path))
|
|
332
|
-
replayed = true;
|
|
333
|
-
yield ROW_WEIGHT;
|
|
334
|
-
}
|
|
335
|
-
const restricted = {
|
|
336
|
-
documents: {},
|
|
337
|
-
revisions: {},
|
|
338
|
-
fileIds: {},
|
|
339
|
-
changes: {},
|
|
340
|
-
binaries: {},
|
|
341
|
-
};
|
|
342
|
-
for (const path of replayed ? touched : []) {
|
|
343
|
-
affected.add(path);
|
|
344
|
-
if (base.documents[path] !== undefined)
|
|
345
|
-
restricted.documents[path] = base.documents[path];
|
|
346
|
-
if (base.revisions[path] !== undefined)
|
|
347
|
-
restricted.revisions[path] = base.revisions[path];
|
|
348
|
-
if (base.fileIds[path] !== undefined)
|
|
349
|
-
restricted.fileIds[path] = base.fileIds[path];
|
|
350
|
-
if (base.changes[path] !== undefined)
|
|
351
|
-
restricted.changes[path] = base.changes[path];
|
|
352
|
-
if (base.binaries[path] !== undefined)
|
|
353
|
-
restricted.binaries[path] = base.binaries[path];
|
|
354
|
-
yield ROW_WEIGHT;
|
|
355
|
-
}
|
|
356
|
-
const staged = replayed ? yield* overlaying(restricted, [batch]) : base;
|
|
357
|
-
const from = (path) => (touched.has(path) ? staged : base);
|
|
358
|
-
return {
|
|
359
|
-
documents: yield* repatched(previousVisible.documents, affected, (path) => from(path).documents[path]),
|
|
360
|
-
revisions: yield* repatched(previousVisible.revisions, affected, (path) => from(path).revisions[path]),
|
|
361
|
-
fileIds: yield* repatched(previousVisible.fileIds, affected, (path) => from(path).fileIds[path]),
|
|
362
|
-
changes: yield* repatched(previousVisible.changes, affected, (path) => from(path).changes[path]),
|
|
363
|
-
binaries: yield* repatched(previousVisible.binaries, affected, (path) => from(path).binaries[path]),
|
|
364
|
-
};
|
|
365
|
-
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const PAGE_METADATA_WORDS: {
|
|
2
|
+
readonly heading: 'Page metadata';
|
|
3
|
+
readonly app: 'App';
|
|
4
|
+
readonly address: 'Address';
|
|
5
|
+
readonly queries: 'Local Queries';
|
|
6
|
+
};
|
|
7
|
+
export declare function pageMetadataBlock(app: string, address: string, queries: readonly unknown[]): string;
|
|
8
|
+
//# sourceMappingURL=page-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-metadata.d.ts","sourceRoot":"","sources":["../src/page-metadata.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB;aAC9B,OAAO,EAAE,eAAe;aACxB,GAAG,EAAE,KAAK;aACV,OAAO,EAAE,SAAS;aAClB,OAAO,EAAE,eAAe;CAChB,CAAC;AAIX,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,SAAS,OAAO,EAAE,GAC1B,MAAM,CAUR"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { queryKey } from '@agentshouse/mdmodel';
|
|
2
|
+
export const PAGE_METADATA_WORDS = {
|
|
3
|
+
heading: 'Page metadata',
|
|
4
|
+
app: 'App',
|
|
5
|
+
address: 'Address',
|
|
6
|
+
queries: 'Local Queries',
|
|
7
|
+
};
|
|
8
|
+
const PAGE_METADATA_QUERIES = 10;
|
|
9
|
+
export function pageMetadataBlock(app, address, queries) {
|
|
10
|
+
const held = [...new Set(queries.map(queryKey))];
|
|
11
|
+
return [
|
|
12
|
+
PAGE_METADATA_WORDS.heading,
|
|
13
|
+
`${PAGE_METADATA_WORDS.app}: ${app}`,
|
|
14
|
+
`${PAGE_METADATA_WORDS.address}: ${address}`,
|
|
15
|
+
...(held.length === 0 || held.length > PAGE_METADATA_QUERIES
|
|
16
|
+
? []
|
|
17
|
+
: [`${PAGE_METADATA_WORDS.queries}:`, ...held]),
|
|
18
|
+
].join('\n');
|
|
19
|
+
}
|
package/dist/parts.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../src/parts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAGhE,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,MAAM,GAAG,IAAI,CAMjE"}
|
package/dist/parts.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { isOwn } from '@agentshouse/session-content';
|
|
2
|
+
import { excerpt } from './read.js';
|
|
3
|
+
export function runningLine(parts) {
|
|
4
|
+
const newest = parts.filter(isOwn).reverse();
|
|
5
|
+
const note = newest.find((part) => part.type === 'text' && part.text.trim() !== '');
|
|
6
|
+
if (note?.type === 'text')
|
|
7
|
+
return excerpt(note.text);
|
|
8
|
+
const call = newest.find((part) => part.type === 'call');
|
|
9
|
+
return call?.type === 'call' && call.line !== '' ? call.line : null;
|
|
10
|
+
}
|
package/dist/paths.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export declare function normalize(path: string): string | null;
|
|
2
2
|
export declare function beneath(prefix: string, path: string): boolean;
|
|
3
3
|
export declare function covered(prefixes: readonly string[], path: string): boolean;
|
|
4
|
+
export declare function authoredAt(patterns: readonly string[], path: string): boolean;
|
|
5
|
+
export declare function ancestors(path: string): readonly string[];
|
|
4
6
|
//# sourceMappingURL=paths.d.ts.map
|
package/dist/paths.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYrD;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAK1E;AAwBD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7E;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAGzD"}
|
package/dist/paths.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isDocumentPath } from '@agentshouse/mdmodel';
|
|
1
2
|
export function normalize(path) {
|
|
2
3
|
const parts = [];
|
|
3
4
|
for (const part of path.split('/')) {
|
|
@@ -22,3 +23,28 @@ export function covered(prefixes, path) {
|
|
|
22
23
|
return normalized !== null && (normalized === '' || beneath(normalized, path));
|
|
23
24
|
});
|
|
24
25
|
}
|
|
26
|
+
function named(pattern, name) {
|
|
27
|
+
const star = pattern.indexOf('*');
|
|
28
|
+
if (star === -1)
|
|
29
|
+
return pattern === name;
|
|
30
|
+
const before = pattern.slice(0, star);
|
|
31
|
+
const after = pattern.slice(star + 1);
|
|
32
|
+
return (name.length > before.length + after.length && name.startsWith(before) && name.endsWith(after));
|
|
33
|
+
}
|
|
34
|
+
function matched(pattern, path) {
|
|
35
|
+
if (pattern === '/')
|
|
36
|
+
return isDocumentPath(path);
|
|
37
|
+
const wanted = pattern.split('/');
|
|
38
|
+
const names = path.split('/');
|
|
39
|
+
const open = wanted.at(-1) === '**';
|
|
40
|
+
const fixed = open ? wanted.slice(0, -1) : wanted;
|
|
41
|
+
return ((open ? names.length > fixed.length : names.length === fixed.length) &&
|
|
42
|
+
fixed.every((one, at) => named(one, names[at])));
|
|
43
|
+
}
|
|
44
|
+
export function authoredAt(patterns, path) {
|
|
45
|
+
return patterns.some((pattern) => matched(pattern, path));
|
|
46
|
+
}
|
|
47
|
+
export function ancestors(path) {
|
|
48
|
+
const parts = path.split('/');
|
|
49
|
+
return parts.slice(1).map((_, at) => parts.slice(0, at + 1).join('/'));
|
|
50
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { PlanReach } from './query.js';
|
|
2
|
+
import { type PortReach } from './reach.js';
|
|
3
|
+
import { type CodeAvailability, type ConnectionAvailability, type Readiness } from './readiness.js';
|
|
4
|
+
import type { Runtime } from './runtime.js';
|
|
5
|
+
export type ReadinessPort = {
|
|
6
|
+
readonly target: string;
|
|
7
|
+
readonly code: CodeAvailability;
|
|
8
|
+
};
|
|
9
|
+
export type ReadinessWatch = {
|
|
10
|
+
readonly port: ReadinessPort;
|
|
11
|
+
readonly reach: PortReach | null;
|
|
12
|
+
readonly deliver: (readiness: Readiness) => void;
|
|
13
|
+
};
|
|
14
|
+
export declare function prepare(runtime: Runtime, locators?: readonly string[]): void;
|
|
15
|
+
export declare function roomsOfReach(reach: PlanReach): ReadonlySet<string>;
|
|
16
|
+
export declare function connectionNow(runtime: Runtime): Promise<ConnectionAvailability>;
|
|
17
|
+
export declare function deliverOwedReadiness(runtime: Runtime, owed: readonly ReadinessWatch[]): Promise<void>;
|
|
18
|
+
export declare function watchReadiness({ store }: Runtime, port: ReadinessPort, reach: PortReach | null, deliver: (readiness: Readiness) => void): () => void;
|
|
19
|
+
export declare function filled(runtime: Runtime): void;
|
|
20
|
+
//# sourceMappingURL=preparation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preparation.d.ts","sourceRoot":"","sources":["../src/preparation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAE3B,KAAK,SAAS,EAEf,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAK5C,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;CAClD,CAAC;AAwCF,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,GAAE,SAAS,MAAM,EAAO,QA+BzE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAElE;AAgDD,wBAAsB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAMrF;AAoFD,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,cAAc,EAAE,iBAI3F;AAED,wBAAgB,cAAc,CAC5B,EAAE,KAAK,EAAE,EAAE,OAAO,EAClB,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,SAAS,GAAG,IAAI,EACvB,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,GACtC,MAAM,IAAI,CAQZ;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,QAMtC"}
|