@agentshouse/mdruntime 0.1.0-c4478f1a5ac2a → 0.1.0-c44d5cc00aee5
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 +23 -19
- package/dist/acceptance.d.ts +3 -0
- package/dist/acceptance.d.ts.map +1 -0
- package/dist/acceptance.js +299 -0
- 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 +26 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +302 -0
- package/dist/adapter.d.ts +174 -119
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts +6 -10
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +35 -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 +31 -11
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +309 -109
- 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 +13 -16
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +17 -88
- 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 +3 -0
- package/dist/chat-types.d.ts.map +1 -0
- package/dist/chat-types.js +11 -0
- package/dist/client.d.ts +42 -24
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +133 -27
- package/dist/collection.d.ts +29 -21
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +48 -290
- 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 -118
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +109 -2967
- 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 +143 -0
- package/dist/conversation-live.d.ts.map +1 -0
- package/dist/conversation-live.js +254 -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 +78 -47
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +1069 -690
- 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 +150 -0
- package/dist/durability.d.ts +23 -1
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +9 -0
- package/dist/entry.d.ts +5 -2
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +33 -28
- 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 +27 -4
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +168 -27
- 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 +40 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -3
- package/dist/install.d.ts +54 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +530 -0
- package/dist/lifecycle.d.ts +7 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +277 -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 +32 -0
- package/dist/lost.d.ts +5 -0
- package/dist/lost.d.ts.map +1 -0
- package/dist/lost.js +49 -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 +23 -7
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +282 -110
- package/dist/messages.d.ts +56 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +158 -0
- package/dist/model.d.ts +11 -13
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +7 -24
- package/dist/models.d.ts +10 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +153 -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 +19 -3
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +116 -20
- 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 +53 -0
- package/dist/outcome.d.ts +52 -8
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +57 -0
- package/dist/overlay.d.ts +8 -5
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +131 -166
- 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 +4 -0
- package/dist/parts.d.ts.map +1 -0
- package/dist/parts.js +13 -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 +227 -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 +282 -0
- package/dist/query.d.ts +27 -186
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -464
- 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 +450 -0
- package/dist/reach.d.ts +21 -7
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +342 -97
- package/dist/react.d.ts +19 -4
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +40 -18
- 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 +49 -0
- package/dist/readiness.d.ts.map +1 -0
- package/dist/readiness.js +27 -0
- package/dist/reads.d.ts +39 -0
- package/dist/reads.d.ts.map +1 -0
- package/dist/reads.js +178 -0
- 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 +17 -14
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +145 -54
- package/dist/refusal.d.ts +5 -0
- package/dist/refusal.d.ts.map +1 -0
- package/dist/refusal.js +55 -0
- package/dist/replica.d.ts +50 -33
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +338 -189
- 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 +39 -10
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +194 -118
- 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 -29
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +60 -118
- package/dist/runtime.d.ts +34 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +1 -0
- package/dist/save.d.ts +43 -48
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +791 -274
- package/dist/saves.d.ts +32 -0
- package/dist/saves.d.ts.map +1 -0
- package/dist/saves.js +410 -0
- package/dist/search.d.ts +15 -77
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +10 -186
- package/dist/seed.d.ts +25 -0
- package/dist/seed.d.ts.map +1 -0
- package/dist/seed.js +145 -0
- package/dist/shared.d.ts +6 -7
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +75 -104
- package/dist/shown.d.ts +33 -0
- package/dist/shown.d.ts.map +1 -0
- package/dist/shown.js +302 -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 +28 -0
- package/dist/socket/lanes.d.ts.map +1 -0
- package/dist/socket/lanes.js +103 -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 +67 -0
- package/dist/socket.d.ts.map +1 -0
- package/dist/socket.js +164 -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 +5 -2
- 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 +214 -0
- package/dist/store/records.d.ts.map +1 -0
- package/dist/store/records.js +438 -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 -142
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +159 -687
- package/dist/stored.d.ts +157 -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 +220 -0
- package/dist/sync.d.ts +19 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +535 -0
- package/dist/tables.d.ts +415 -0
- package/dist/tables.d.ts.map +1 -0
- package/dist/tables.js +761 -0
- package/dist/tallies.d.ts +18 -0
- package/dist/tallies.d.ts.map +1 -0
- package/dist/tallies.js +128 -0
- package/dist/transfer.d.ts +0 -5
- package/dist/transfer.d.ts.map +1 -1
- package/dist/turn.d.ts +5 -3
- package/dist/turn.d.ts.map +1 -1
- package/dist/turn.js +51 -21
- 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 +11 -0
- package/dist/windows.d.ts.map +1 -0
- package/dist/windows.js +16 -0
- package/dist/wire.d.ts +228 -36
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +75 -33
- package/package.json +19 -19
- package/AGENTS.md +0 -309
- 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/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 -60
- 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 -26
- package/dist/chat/list.d.ts.map +0 -1
- package/dist/chat/list.js +0 -62
- package/dist/chat/markdown.d.ts +0 -20
- package/dist/chat/markdown.d.ts.map +0 -1
- package/dist/chat/markdown.js +0 -188
- 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 -21
- package/dist/chat/messages.d.ts.map +0 -1
- package/dist/chat/messages.js +0 -151
- 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/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 -620
- package/dist/chat/question.d.ts +0 -9
- package/dist/chat/question.d.ts.map +0 -1
- package/dist/chat/question.js +0 -80
- 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 -33
- package/dist/chat/ready.d.ts.map +0 -1
- package/dist/chat/ready.js +0 -91
- 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/log.d.ts +0 -5
- package/dist/log.d.ts.map +0 -1
- package/dist/log.js +0 -14
- package/dist/read-side.d.ts +0 -25
- package/dist/read-side.d.ts.map +0 -1
- package/dist/read-side.js +0 -639
package/dist/overlay.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import { apply, parse, serialize } from '@agentshouse/mdmodel';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
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';
|
|
4
|
+
import { ROW_WEIGHT } from './turn.js';
|
|
5
|
+
export function* acceptedBinaries(files) {
|
|
6
|
+
for (const [path, file] of entriesIn(files))
|
|
7
|
+
yield [path, { state: 'accepted', ...file }];
|
|
5
8
|
}
|
|
6
9
|
export function sameBinary(left, right) {
|
|
7
10
|
if (left === undefined || right === undefined)
|
|
@@ -11,7 +14,7 @@ export function sameBinary(left, right) {
|
|
|
11
14
|
left.mediaType === right.mediaType &&
|
|
12
15
|
left.sha256 === right.sha256 &&
|
|
13
16
|
(left.state === 'accepted'
|
|
14
|
-
? right.state === 'accepted'
|
|
17
|
+
? right.state === 'accepted'
|
|
15
18
|
: right.state === 'pending' && left.localId === right.localId));
|
|
16
19
|
}
|
|
17
20
|
export function sameChange(left, right) {
|
|
@@ -22,11 +25,13 @@ export function sameChange(left, right) {
|
|
|
22
25
|
left.author?.id === right.author?.id &&
|
|
23
26
|
left.author?.name === right.author?.name);
|
|
24
27
|
}
|
|
25
|
-
|
|
28
|
+
function isPart(change) {
|
|
29
|
+
return change.kind === 'field' || change.kind === 'section' || change.kind === 'preamble';
|
|
30
|
+
}
|
|
26
31
|
function at(path, name) {
|
|
27
32
|
return `${path} ${name}`;
|
|
28
33
|
}
|
|
29
|
-
function priorsOf(preconditions) {
|
|
34
|
+
function* priorsOf(preconditions) {
|
|
30
35
|
const fields = new Map();
|
|
31
36
|
const sections = new Map();
|
|
32
37
|
const preambles = new Map();
|
|
@@ -40,6 +45,7 @@ function priorsOf(preconditions) {
|
|
|
40
45
|
if (precondition.kind === 'preamble') {
|
|
41
46
|
preambles.set(precondition.path, precondition.value);
|
|
42
47
|
}
|
|
48
|
+
yield ROW_WEIGHT;
|
|
43
49
|
}
|
|
44
50
|
return {
|
|
45
51
|
field: (path, name) => fields.get(at(path, name)),
|
|
@@ -47,59 +53,71 @@ function priorsOf(preconditions) {
|
|
|
47
53
|
preamble: (path) => preambles.get(path) ?? '',
|
|
48
54
|
};
|
|
49
55
|
}
|
|
50
|
-
function
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
function edited(
|
|
67
|
-
if (change.kind === 'field')
|
|
68
|
-
return
|
|
78
|
+
function edited(change, priors) {
|
|
79
|
+
if (change.kind === 'field')
|
|
80
|
+
return {
|
|
69
81
|
kind: 'field',
|
|
70
82
|
name: change.name,
|
|
71
83
|
value: change.value,
|
|
72
84
|
prior: priors.field(change.path, change.name),
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
kind: 'preamble',
|
|
78
|
-
value: change.value,
|
|
79
|
-
prior: priors.preamble(change.path),
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
if (change.kind !== 'section')
|
|
83
|
-
return null;
|
|
84
|
-
return apply(document, {
|
|
85
|
+
};
|
|
86
|
+
if (change.kind === 'preamble')
|
|
87
|
+
return { kind: 'preamble', value: change.value, prior: priors.preamble(change.path) };
|
|
88
|
+
return {
|
|
85
89
|
kind: 'section',
|
|
86
90
|
name: change.name,
|
|
87
91
|
value: change.value,
|
|
88
92
|
prior: priors.section(change.path, change.name),
|
|
89
|
-
}
|
|
93
|
+
};
|
|
90
94
|
}
|
|
91
|
-
function edit(staged,
|
|
92
|
-
const
|
|
95
|
+
function edit(staged, changes, priors, composition) {
|
|
96
|
+
const path = changes[0].path;
|
|
97
|
+
delete staged.revisions[path];
|
|
98
|
+
const text = staged.documents[path];
|
|
93
99
|
if (text === undefined)
|
|
94
|
-
return
|
|
95
|
-
const
|
|
100
|
+
return changes.length;
|
|
101
|
+
const definitions = definitionsAt(composition, path);
|
|
102
|
+
const parsed = parse(text, path, definitions);
|
|
96
103
|
if (!parsed.ok)
|
|
97
|
-
return
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
104
|
+
return changes.length;
|
|
105
|
+
const definition = definitions(parsed.document.type);
|
|
106
|
+
const wanted = changes.map((change) => edited(change, priors));
|
|
107
|
+
const first = apply(parsed.document, wanted, definition);
|
|
108
|
+
if (first.outcome === 'refuse')
|
|
109
|
+
return changes.length;
|
|
110
|
+
if (first.outcome === 'applied') {
|
|
111
|
+
staged.documents[path] = serialize(first.document);
|
|
112
|
+
return 0;
|
|
113
|
+
}
|
|
114
|
+
const stale = new Set(first.stale);
|
|
115
|
+
const kept = wanted.filter((_, at) => !stale.has(at));
|
|
116
|
+
const rest = apply(parsed.document, kept, definition);
|
|
117
|
+
if (rest.outcome !== 'applied')
|
|
118
|
+
return changes.length;
|
|
119
|
+
staged.documents[path] = serialize(rest.document);
|
|
120
|
+
return first.stale.length;
|
|
103
121
|
}
|
|
104
122
|
function relocate(staged, from, to) {
|
|
105
123
|
const text = staged.documents[from];
|
|
@@ -119,29 +137,41 @@ function relocate(staged, from, to) {
|
|
|
119
137
|
}
|
|
120
138
|
function moveHead(heads, from, to) {
|
|
121
139
|
const revision = heads.revisions[from];
|
|
140
|
+
const fileId = heads.fileIds[from];
|
|
141
|
+
const created = heads.created[from];
|
|
122
142
|
const change = heads.changes[from];
|
|
123
143
|
delete heads.revisions[from];
|
|
144
|
+
delete heads.fileIds[from];
|
|
145
|
+
delete heads.created[from];
|
|
124
146
|
delete heads.changes[from];
|
|
147
|
+
delete heads.fileIds[to];
|
|
148
|
+
delete heads.created[to];
|
|
125
149
|
delete heads.changes[to];
|
|
126
150
|
if (revision !== undefined)
|
|
127
151
|
heads.revisions[to] = revision;
|
|
152
|
+
if (fileId !== undefined)
|
|
153
|
+
heads.fileIds[to] = fileId;
|
|
154
|
+
if (created !== undefined)
|
|
155
|
+
heads.created[to] = created;
|
|
128
156
|
if (change !== undefined)
|
|
129
157
|
heads.changes[to] = change;
|
|
130
158
|
}
|
|
131
159
|
function erase(staged, path) {
|
|
132
160
|
delete staged.documents[path];
|
|
133
161
|
delete staged.revisions[path];
|
|
162
|
+
delete staged.fileIds[path];
|
|
163
|
+
delete staged.created[path];
|
|
134
164
|
delete staged.changes[path];
|
|
135
165
|
delete staged.binaries[path];
|
|
136
166
|
}
|
|
137
|
-
function stage(staged, change,
|
|
138
|
-
if (change.kind === 'field' || change.kind === 'section' || change.kind === 'preamble') {
|
|
139
|
-
delete staged.revisions[change.path];
|
|
140
|
-
return edit(staged, change, priors);
|
|
141
|
-
}
|
|
167
|
+
function stage(staged, change, composition) {
|
|
142
168
|
if (change.kind === 'create') {
|
|
143
169
|
staged.documents[change.path] =
|
|
144
|
-
'content' in change
|
|
170
|
+
'content' in change
|
|
171
|
+
? change.content
|
|
172
|
+
: compose(change.path, change.fields, change.sections, composition);
|
|
173
|
+
delete staged.fileIds[change.path];
|
|
174
|
+
delete staged.created[change.path];
|
|
145
175
|
delete staged.changes[change.path];
|
|
146
176
|
return true;
|
|
147
177
|
}
|
|
@@ -169,132 +199,67 @@ function stage(staged, change, priors) {
|
|
|
169
199
|
if (change.kind === 'move') {
|
|
170
200
|
return relocate(staged, change.path, change.to);
|
|
171
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
|
+
}
|
|
172
211
|
erase(staged, change.path);
|
|
173
212
|
return true;
|
|
174
213
|
}
|
|
175
|
-
|
|
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) {
|
|
176
225
|
const staged = {
|
|
177
226
|
documents: drafted(base.documents),
|
|
178
227
|
binaries: drafted(base.binaries),
|
|
179
228
|
revisions: drafted(base.revisions),
|
|
229
|
+
fileIds: drafted(base.fileIds),
|
|
230
|
+
created: drafted(base.created),
|
|
180
231
|
changes: drafted(base.changes),
|
|
181
232
|
};
|
|
182
233
|
for (const batch of queue) {
|
|
183
|
-
const priors = priorsOf(batch.preconditions);
|
|
184
|
-
for (
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
documents: settled(staged.documents),
|
|
191
|
-
binaries: settled(staged.binaries),
|
|
192
|
-
revisions: settled(staged.revisions),
|
|
193
|
-
changes: settled(staged.changes),
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
function pathsOf(batch) {
|
|
197
|
-
return batch.changes.flatMap((change) => change.kind === 'move' ? [change.path, change.to] : [change.path]);
|
|
198
|
-
}
|
|
199
|
-
export function sameLayerText(left, right) {
|
|
200
|
-
return (differing(left.documents, right.documents).size === 0 &&
|
|
201
|
-
differing(left.binaries, right.binaries, sameBinary).size === 0);
|
|
202
|
-
}
|
|
203
|
-
export function changedPaths(left, right) {
|
|
204
|
-
return new Set([
|
|
205
|
-
...differing(left.documents, right.documents),
|
|
206
|
-
...differing(left.revisions, right.revisions),
|
|
207
|
-
...differing(left.changes, right.changes, sameChange),
|
|
208
|
-
...differing(left.binaries, right.binaries, sameBinary),
|
|
209
|
-
]);
|
|
210
|
-
}
|
|
211
|
-
function replayHeads(base, queue) {
|
|
212
|
-
const heads = { revisions: drafted(base.revisions), changes: drafted(base.changes) };
|
|
213
|
-
for (const batch of queue) {
|
|
214
|
-
for (const change of batch.changes) {
|
|
215
|
-
if (change.kind === 'remove') {
|
|
216
|
-
delete heads.revisions[change.path];
|
|
217
|
-
delete heads.changes[change.path];
|
|
218
|
-
}
|
|
219
|
-
else if (change.kind === 'create') {
|
|
220
|
-
delete heads.changes[change.path];
|
|
221
|
-
}
|
|
222
|
-
else if (change.kind === 'replace' ||
|
|
223
|
-
change.kind === 'field' ||
|
|
224
|
-
change.kind === 'section' ||
|
|
225
|
-
change.kind === 'preamble') {
|
|
226
|
-
delete heads.revisions[change.path];
|
|
227
|
-
}
|
|
228
|
-
else if (change.kind === 'binary') {
|
|
229
|
-
delete heads.revisions[change.path];
|
|
230
|
-
delete heads.changes[change.path];
|
|
231
|
-
}
|
|
232
|
-
else if (change.kind === 'move') {
|
|
233
|
-
moveHead(heads, change.path, change.to);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
return { revisions: settled(heads.revisions), changes: settled(heads.changes) };
|
|
238
|
-
}
|
|
239
|
-
export function overlayChanged(base, queue, previousBase, previousQueue, previousVisible) {
|
|
240
|
-
const before = previousQueue.map((batch) => JSON.stringify(batch));
|
|
241
|
-
const after = queue.map((batch) => JSON.stringify(batch));
|
|
242
|
-
if (before.length === after.length &&
|
|
243
|
-
before.every((id, index) => id === after[index]) &&
|
|
244
|
-
sameLayerText(base, previousBase)) {
|
|
245
|
-
return {
|
|
246
|
-
documents: previousVisible.documents,
|
|
247
|
-
binaries: previousVisible.binaries,
|
|
248
|
-
...replayHeads(base, queue),
|
|
249
|
-
};
|
|
250
|
-
}
|
|
251
|
-
const affected = new Set(changedPaths(base, previousBase));
|
|
252
|
-
const oldIds = new Set(before);
|
|
253
|
-
const newIds = new Set(after);
|
|
254
|
-
for (const batch of previousQueue) {
|
|
255
|
-
if (!newIds.has(JSON.stringify(batch)))
|
|
256
|
-
for (const path of pathsOf(batch))
|
|
257
|
-
affected.add(path);
|
|
258
|
-
}
|
|
259
|
-
for (const batch of queue) {
|
|
260
|
-
if (!oldIds.has(JSON.stringify(batch)))
|
|
261
|
-
for (const path of pathsOf(batch))
|
|
262
|
-
affected.add(path);
|
|
263
|
-
}
|
|
264
|
-
let expanded = true;
|
|
265
|
-
while (expanded) {
|
|
266
|
-
expanded = false;
|
|
267
|
-
for (const batch of queue) {
|
|
268
|
-
const touched = pathsOf(batch);
|
|
269
|
-
if (!touched.some((path) => affected.has(path)))
|
|
234
|
+
const priors = yield* priorsOf(batch.preconditions);
|
|
235
|
+
for (let index = 0; index < batch.changes.length; index += 1) {
|
|
236
|
+
const change = batch.changes[index];
|
|
237
|
+
if (!isPart(change)) {
|
|
238
|
+
if (!stage(staged, change, composition))
|
|
239
|
+
unapplied?.();
|
|
240
|
+
yield ROW_WEIGHT;
|
|
270
241
|
continue;
|
|
271
|
-
for (const path of touched) {
|
|
272
|
-
if (affected.has(path))
|
|
273
|
-
continue;
|
|
274
|
-
affected.add(path);
|
|
275
|
-
expanded = true;
|
|
276
242
|
}
|
|
243
|
+
const run = [change];
|
|
244
|
+
while (index + 1 < batch.changes.length) {
|
|
245
|
+
const next = batch.changes[index + 1];
|
|
246
|
+
if (!isPart(next) || next.path !== change.path)
|
|
247
|
+
break;
|
|
248
|
+
run.push(next);
|
|
249
|
+
index += 1;
|
|
250
|
+
}
|
|
251
|
+
const text = staged.documents[change.path] ?? '';
|
|
252
|
+
for (let left = edit(staged, run, priors, composition); left > 0; left -= 1)
|
|
253
|
+
unapplied?.();
|
|
254
|
+
yield ROW_WEIGHT + text.length;
|
|
277
255
|
}
|
|
278
256
|
}
|
|
279
|
-
const documents = {};
|
|
280
|
-
const revisions = {};
|
|
281
|
-
const changes = {};
|
|
282
|
-
const binaries = {};
|
|
283
|
-
for (const path of affected) {
|
|
284
|
-
if (base.documents[path] !== undefined)
|
|
285
|
-
documents[path] = base.documents[path];
|
|
286
|
-
if (base.revisions[path] !== undefined)
|
|
287
|
-
revisions[path] = base.revisions[path];
|
|
288
|
-
if (base.changes[path] !== undefined)
|
|
289
|
-
changes[path] = base.changes[path];
|
|
290
|
-
if (base.binaries[path] !== undefined)
|
|
291
|
-
binaries[path] = base.binaries[path];
|
|
292
|
-
}
|
|
293
|
-
const staged = overlay({ documents, revisions, changes, binaries }, queue.filter((batch) => pathsOf(batch).some((path) => affected.has(path))));
|
|
294
257
|
return {
|
|
295
|
-
documents:
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
258
|
+
documents: yield* settling(staged.documents),
|
|
259
|
+
binaries: yield* settling(staged.binaries),
|
|
260
|
+
revisions: yield* settling(staged.revisions),
|
|
261
|
+
fileIds: yield* settling(staged.fileIds),
|
|
262
|
+
created: yield* settling(staged.created),
|
|
263
|
+
changes: yield* settling(staged.changes),
|
|
299
264
|
};
|
|
300
265
|
}
|
|
@@ -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,CAGjE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,MAAM,GAAG,IAAI,CAKjE"}
|
package/dist/parts.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { isOwn } from '@agentshouse/session-content';
|
|
2
|
+
import { excerpt } from './read.js';
|
|
3
|
+
export function currentStep(parts) {
|
|
4
|
+
const call = [...parts].reverse().find((part) => part.type === 'call');
|
|
5
|
+
return call?.type === 'call' && call.line !== '' ? call.line : null;
|
|
6
|
+
}
|
|
7
|
+
export function runningLine(parts) {
|
|
8
|
+
const own = parts.filter(isOwn);
|
|
9
|
+
const note = [...own].reverse().find((part) => part.type === 'text' && part.text.trim() !== '');
|
|
10
|
+
if (note?.type === 'text')
|
|
11
|
+
return excerpt(note.text);
|
|
12
|
+
return currentStep(own);
|
|
13
|
+
}
|
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;AAqCF,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,GAAE,SAAS,MAAM,EAAO,QA4BzE;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;AA8ED,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,QAKtC"}
|