@agentshouse/mdruntime 0.1.0-cd507e16e5fc0 → 0.1.0-cd574a610e9c8
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 +21 -19
- package/dist/acceptance.d.ts +0 -3
- package/dist/acceptance.d.ts.map +1 -1
- package/dist/acceptance.js +75 -165
- 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 +118 -67
- package/dist/adapter.d.ts +90 -58
- 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/authored.d.ts +88 -0
- package/dist/authored.d.ts.map +1 -0
- package/dist/authored.js +345 -0
- package/dist/bootstrap.d.ts +1 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +6 -19
- 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 +4 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +7 -2
- package/dist/chat-types.d.ts +0 -2
- package/dist/chat-types.d.ts.map +1 -1
- package/dist/chat-types.js +0 -2
- package/dist/client.d.ts +13 -20
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +36 -20
- package/dist/collection.d.ts +25 -4
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +19 -2
- package/dist/column.d.ts +5 -0
- package/dist/column.d.ts.map +1 -0
- package/dist/column.js +9 -0
- package/dist/compile.d.ts +2 -0
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +31 -25
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +31 -24
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +1 -1
- package/dist/conversation-live.d.ts +26 -12
- package/dist/conversation-live.d.ts.map +1 -1
- package/dist/conversation-live.js +23 -12
- package/dist/conversation-row.d.ts +8 -1
- package/dist/conversation-row.d.ts.map +1 -1
- package/dist/conversation-row.js +20 -7
- package/dist/conversation.d.ts +37 -12
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +320 -234
- 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 +4 -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.map +1 -1
- package/dist/figures.js +4 -2
- package/dist/file.d.ts +1 -1
- package/dist/file.d.ts.map +1 -1
- package/dist/file.js +3 -2
- package/dist/host.d.ts +18 -2
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +59 -15
- package/dist/index.d.ts +16 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -7
- package/dist/install.d.ts +10 -6
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +92 -111
- package/dist/lifecycle.d.ts +1 -1
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +54 -40
- package/dist/listing.d.ts +11 -12
- package/dist/listing.d.ts.map +1 -1
- package/dist/listing.js +48 -72
- package/dist/live.d.ts +5 -3
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +74 -33
- package/dist/loaded.d.ts +5 -0
- package/dist/loaded.d.ts.map +1 -0
- package/dist/loaded.js +40 -0
- 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 +11 -23
- package/dist/media.d.ts +6 -1
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +68 -17
- package/dist/memory.d.ts +8 -3
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +92 -33
- package/dist/messages.d.ts +12 -6
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +30 -38
- 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 +97 -139
- package/dist/observation.d.ts +27 -12
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +184 -85
- 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 +5 -9
- package/dist/outcome.d.ts +13 -1
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +32 -2
- package/dist/overlay.d.ts +6 -2
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +37 -24
- 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/preparation.d.ts +27 -6
- package/dist/preparation.d.ts.map +1 -1
- package/dist/preparation.js +156 -68
- package/dist/presence.d.ts +58 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +231 -0
- package/dist/queries.d.ts +2 -2
- package/dist/queries.d.ts.map +1 -1
- package/dist/queries.js +67 -31
- package/dist/query.d.ts +0 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/questions.d.ts +1 -5
- package/dist/questions.d.ts.map +1 -1
- package/dist/questions.js +1 -7
- package/dist/queue.d.ts +40 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +480 -0
- package/dist/reach.d.ts +2 -3
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +88 -26
- package/dist/react.d.ts +8 -1
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +33 -1
- package/dist/readiness.d.ts +9 -3
- package/dist/readiness.d.ts.map +1 -1
- package/dist/readiness.js +3 -5
- package/dist/reads.d.ts +4 -2
- package/dist/reads.d.ts.map +1 -1
- package/dist/reads.js +11 -4
- 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 -11
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +15 -17
- 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 +31 -8
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +273 -66
- package/dist/room-drafts.d.ts.map +1 -1
- package/dist/room-drafts.js +22 -18
- package/dist/room-list.d.ts +10 -0
- package/dist/room-list.d.ts.map +1 -0
- package/dist/room-list.js +45 -0
- package/dist/rows.d.ts +2 -1
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +9 -10
- package/dist/runtime.d.ts +9 -18
- package/dist/runtime.d.ts.map +1 -1
- package/dist/save.d.ts +42 -90
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +327 -229
- package/dist/saves.d.ts +4 -40
- package/dist/saves.d.ts.map +1 -1
- package/dist/saves.js +143 -714
- package/dist/seed.d.ts.map +1 -1
- package/dist/seed.js +4 -5
- package/dist/shared.d.ts +0 -5
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +4 -90
- package/dist/shown.d.ts +7 -5
- package/dist/shown.d.ts.map +1 -1
- package/dist/shown.js +77 -63
- 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 +5 -7
- package/dist/source.d.ts.map +1 -1
- package/dist/source.js +18 -6
- package/dist/store/installs.d.ts +2 -2
- package/dist/store/installs.d.ts.map +1 -1
- package/dist/store/installs.js +10 -4
- package/dist/store/readiness.d.ts +5 -4
- package/dist/store/readiness.d.ts.map +1 -1
- package/dist/store/readiness.js +28 -12
- package/dist/store/records.d.ts +18 -7
- package/dist/store/records.d.ts.map +1 -1
- package/dist/store/records.js +58 -24
- package/dist/store/rooms-shown.d.ts +8 -0
- package/dist/store/rooms-shown.d.ts.map +1 -0
- package/dist/store/rooms-shown.js +13 -0
- 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 +23 -14
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +46 -17
- package/dist/stored.d.ts +25 -14
- package/dist/stored.d.ts.map +1 -1
- package/dist/stored.js +83 -32
- package/dist/surface.d.ts +5 -3
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +25 -23
- package/dist/sync.d.ts +1 -1
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +96 -92
- package/dist/tables.d.ts +16 -57
- package/dist/tables.d.ts.map +1 -1
- package/dist/tables.js +91 -332
- 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 +4 -10
- 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 -44
- 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/stored.js
CHANGED
|
@@ -3,14 +3,16 @@ import { composedOf } from './collection.js';
|
|
|
3
3
|
import { described, derived, heldOf } from './rows.js';
|
|
4
4
|
export const REPLICA_TABLES = [
|
|
5
5
|
'CREATE TABLE replica_keys (key INTEGER PRIMARY KEY AUTOINCREMENT, locator TEXT NOT NULL, transfer TEXT NOT NULL, fingerprint TEXT NOT NULL, rederiving INTEGER)',
|
|
6
|
+
'CREATE INDEX replica_keys_locator ON replica_keys (locator)',
|
|
6
7
|
'CREATE TABLE replica_rooms (locator TEXT PRIMARY KEY, key INTEGER NOT NULL, record TEXT NOT NULL, documents INTEGER NOT NULL DEFAULT 0) WITHOUT ROWID',
|
|
8
|
+
'CREATE INDEX replica_rooms_key ON replica_rooms (key)',
|
|
7
9
|
"CREATE INDEX replica_rooms_model ON replica_rooms (json_extract(record, '$.model.snapshot.identity'), json_extract(record, '$.model.snapshot.version'))",
|
|
8
10
|
'CREATE TABLE replica_models (identity TEXT NOT NULL, version TEXT NOT NULL, schema TEXT NOT NULL, PRIMARY KEY (identity, version)) WITHOUT ROWID',
|
|
9
|
-
"CREATE TABLE replica_entries (id INTEGER PRIMARY KEY, key INTEGER NOT NULL, layer INTEGER NOT NULL, path TEXT NOT NULL, visible INTEGER NOT NULL, present INTEGER NOT NULL,
|
|
11
|
+
"CREATE TABLE replica_entries (id INTEGER PRIMARY KEY, key INTEGER NOT NULL, layer INTEGER NOT NULL, path TEXT NOT NULL, visible INTEGER NOT NULL, present INTEGER NOT NULL, binary TEXT, revision TEXT, file_id TEXT, change TEXT, written TEXT, type TEXT, declared TEXT, folder TEXT NOT NULL, fields TEXT, links TEXT, part TEXT, created TEXT, created_instant TEXT, changed_instant TEXT, bytes INTEGER GENERATED ALWAYS AS (CASE WHEN binary IS NULL THEN length(CAST(content AS BLOB)) ELSE binary ->> '$.byteLength' END) STORED, content TEXT)",
|
|
10
12
|
'CREATE UNIQUE INDEX replica_entries_path ON replica_entries (key, layer, path)',
|
|
11
13
|
'CREATE INDEX replica_entries_visible ON replica_entries (key, visible, present, path, binary)',
|
|
12
14
|
'CREATE INDEX replica_entries_folder ON replica_entries (key, folder, path)',
|
|
13
|
-
'CREATE INDEX replica_entries_type ON replica_entries (key, type, visible, present,
|
|
15
|
+
'CREATE INDEX replica_entries_type ON replica_entries (key, type, visible, present, folder)',
|
|
14
16
|
'CREATE INDEX replica_entries_key ON replica_entries (key)',
|
|
15
17
|
sql.VALUE_TABLE,
|
|
16
18
|
'CREATE TABLE replica_links (doc INTEGER NOT NULL, key INTEGER NOT NULL, kind TEXT NOT NULL, keys TEXT NOT NULL, places TEXT NOT NULL, target TEXT NOT NULL, field TEXT NOT NULL, PRIMARY KEY (doc, kind, keys, places, target)) WITHOUT ROWID',
|
|
@@ -28,7 +30,6 @@ const ENTRY_WEIGHT = 256;
|
|
|
28
30
|
const ABSENT = {
|
|
29
31
|
type: null,
|
|
30
32
|
declared: null,
|
|
31
|
-
queried: false,
|
|
32
33
|
folder: '',
|
|
33
34
|
fields: null,
|
|
34
35
|
links: null,
|
|
@@ -78,13 +79,12 @@ function removeEntry(connection, key, layer, path) {
|
|
|
78
79
|
connection.run('DELETE FROM replica_entries WHERE id = ?', [id]);
|
|
79
80
|
}
|
|
80
81
|
function insertEntry(connection, key, layer, entry, present, made, part = null) {
|
|
81
|
-
connection.run('INSERT INTO replica_entries (key, layer, path, visible, present,
|
|
82
|
+
connection.run('INSERT INTO replica_entries (key, layer, path, visible, present, content, binary, revision, file_id, created, created_instant, change, changed_instant, written, type, declared, folder, fields, links, part) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', [
|
|
82
83
|
key,
|
|
83
84
|
layer,
|
|
84
85
|
entry.path,
|
|
85
86
|
flag(present && layer !== REFRESHED),
|
|
86
87
|
flag(present),
|
|
87
|
-
flag(made.queried),
|
|
88
88
|
entry.binary === null ? entry.content : null,
|
|
89
89
|
entry.binary === null ? null : JSON.stringify(entry.binary),
|
|
90
90
|
entry.revision,
|
|
@@ -212,10 +212,10 @@ export function resume(connection, request) {
|
|
|
212
212
|
}
|
|
213
213
|
const key = held?.key ?? newKey(connection, request.locator, request.transfer, request.fingerprint, false);
|
|
214
214
|
recomposed(connection, key, request.fingerprint);
|
|
215
|
-
if (copied.length > 0
|
|
215
|
+
if (copied.length > 0) {
|
|
216
216
|
owing(connection, key);
|
|
217
217
|
const named = JSON.stringify(copied);
|
|
218
|
-
connection.run(`INSERT INTO replica_entries (key, layer, path, visible, present,
|
|
218
|
+
connection.run(`INSERT INTO replica_entries (key, layer, path, visible, present, content, binary, revision, file_id, created, created_instant, change, changed_instant, written, type, declared, folder, fields, links, part) SELECT ?, ${CONFIRMED}, path, 1, 1, content, binary, revision, file_id, created, created_instant, change, changed_instant, written, type, declared, folder, fields, links, part FROM replica_entries WHERE key = ? AND layer = ${CONFIRMED} AND present = 1 AND part IN (SELECT value FROM json_each(?)) ORDER BY path`, [key, request.published, named]);
|
|
219
219
|
connection.run(`INSERT OR REPLACE INTO replica_folders (key, layer, path, present, part) SELECT ?, ${CONFIRMED}, path, 1, part FROM replica_folders WHERE key = ? AND layer = ${CONFIRMED} AND present = 1 AND part IN (SELECT value FROM json_each(?))`, [key, request.published, named]);
|
|
220
220
|
}
|
|
221
221
|
return { key, transfer: held?.transfer ?? request.transfer, staged: [...kept, ...copied] };
|
|
@@ -393,7 +393,7 @@ export function commit(connection, rooms) {
|
|
|
393
393
|
function rootsOf(connection, locator) {
|
|
394
394
|
const [row] = connection.rows('SELECT record FROM replica_rooms WHERE locator = ?', [locator]);
|
|
395
395
|
const record = json(row?.record);
|
|
396
|
-
return record?.typedSelection?.roots ?? [];
|
|
396
|
+
return record?.declaration.typedSelection?.roots ?? [];
|
|
397
397
|
}
|
|
398
398
|
export function fenceRooms(connection, locators) {
|
|
399
399
|
for (const locator of locators) {
|
|
@@ -541,8 +541,8 @@ export function referrers(connection, key, view, targets) {
|
|
|
541
541
|
.rows(`SELECT DISTINCT e.path, l.target FROM replica_links l JOIN replica_entries e ON e.id = l.doc WHERE l.key = ? AND l.target IN (SELECT value FROM json_each(?)) AND ${viewed(view, 'e')}`, [key, paths(targets)])
|
|
542
542
|
.map((row) => ({ path: text(row.path), target: text(row.target) }));
|
|
543
543
|
}
|
|
544
|
-
export function folders(connection, key,
|
|
545
|
-
return list.filter((path) => connection.rows(`SELECT 1 FROM replica_folders f WHERE f.key = ? AND f.layer = ${CONFIRMED} AND f.present = 1 AND f.path = ? UNION ALL SELECT 1 FROM replica_entries e WHERE e.key = ? AND ${viewed(
|
|
544
|
+
export function folders(connection, key, list) {
|
|
545
|
+
return list.filter((path) => connection.rows(`SELECT 1 FROM replica_folders f WHERE f.key = ? AND f.layer = ${CONFIRMED} AND f.present = 1 AND f.path = ? UNION ALL SELECT 1 FROM replica_entries e WHERE e.key = ? AND ${viewed('visible', 'e')} AND e.path >= ? AND e.path < ? LIMIT 1`, [key, path, key, `${path}/`, `${path}0`]).length > 0);
|
|
546
546
|
}
|
|
547
547
|
export function typedWithin(connection, key, view, roots, within) {
|
|
548
548
|
return (connection.rows(`SELECT 1 FROM replica_entries e WHERE e.key = ? AND ${viewed(view, 'e')} AND e.declared IS NOT NULL AND e.declared <> 'any' AND ${within ? '' : 'NOT '}${beneathRoots('e.path')} LIMIT 1`, [key, JSON.stringify(roots)]).length > 0);
|
|
@@ -590,15 +590,33 @@ export function overlaid(connection, key) {
|
|
|
590
590
|
.rows(`SELECT path FROM replica_entries WHERE key = ? AND layer = ${OVERLAY}`, [key])
|
|
591
591
|
.map((row) => text(row.path));
|
|
592
592
|
}
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
593
|
+
const COVER_ROWS = `SELECT r.locator, r.key, r.documents, json_extract(r.record, '$.transfer') AS transfer,
|
|
594
|
+
json_extract(r.record, '$.roomVersion') AS room_version,
|
|
595
|
+
coalesce(json_extract(r.record, '$.inventory.bytes'), 0) AS bytes,
|
|
596
|
+
json_extract(r.record, '$.declaration.replica.offline') AS offline,
|
|
597
|
+
k.rederiving IS NULL AS indexed
|
|
598
|
+
FROM replica_rooms r LEFT JOIN replica_keys k ON k.key = r.key`;
|
|
599
|
+
const COVER_MARK = `UPDATE cover_clock SET at = at + 1;
|
|
600
|
+
INSERT OR REPLACE INTO cover_changes (locator, at) SELECT`;
|
|
601
|
+
const COVER_LOG = [
|
|
602
|
+
'CREATE TEMP TABLE cover_clock (token TEXT NOT NULL, at INTEGER NOT NULL)',
|
|
603
|
+
'CREATE TEMP TABLE cover_changes (locator TEXT PRIMARY KEY, at INTEGER NOT NULL) WITHOUT ROWID',
|
|
604
|
+
'CREATE INDEX temp.cover_changes_at ON cover_changes (at)',
|
|
605
|
+
'INSERT INTO temp.cover_clock (token, at) VALUES (lower(hex(randomblob(8))), 0)',
|
|
606
|
+
`CREATE TEMP TRIGGER cover_room_added AFTER INSERT ON replica_rooms BEGIN
|
|
607
|
+
${COVER_MARK} NEW.locator, at FROM cover_clock; END`,
|
|
608
|
+
`CREATE TEMP TRIGGER cover_room_changed AFTER UPDATE ON replica_rooms BEGIN
|
|
609
|
+
${COVER_MARK} OLD.locator, at FROM cover_clock;
|
|
610
|
+
INSERT OR REPLACE INTO cover_changes (locator, at) SELECT NEW.locator, at FROM cover_clock; END`,
|
|
611
|
+
`CREATE TEMP TRIGGER cover_room_removed AFTER DELETE ON replica_rooms BEGIN
|
|
612
|
+
${COVER_MARK} OLD.locator, at FROM cover_clock; END`,
|
|
613
|
+
`CREATE TEMP TRIGGER cover_key_changed AFTER UPDATE OF rederiving ON replica_keys BEGIN
|
|
614
|
+
${COVER_MARK} r.locator, c.at FROM replica_rooms r, cover_clock c WHERE r.key = NEW.key; END`,
|
|
615
|
+
`CREATE TEMP TRIGGER cover_key_removed AFTER DELETE ON replica_keys BEGIN
|
|
616
|
+
${COVER_MARK} r.locator, c.at FROM replica_rooms r, cover_clock c WHERE r.key = OLD.key; END`,
|
|
617
|
+
];
|
|
618
|
+
function coveredRow(row) {
|
|
619
|
+
return {
|
|
602
620
|
locator: text(row.locator),
|
|
603
621
|
key: number(row.key),
|
|
604
622
|
transfer: text(row.transfer),
|
|
@@ -607,10 +625,44 @@ export function covering(connection) {
|
|
|
607
625
|
documents: number(row.documents),
|
|
608
626
|
bytes: number(row.bytes),
|
|
609
627
|
offline: text(row.offline),
|
|
610
|
-
}
|
|
628
|
+
};
|
|
629
|
+
}
|
|
630
|
+
function coverLog(connection) {
|
|
631
|
+
const logged = connection.rows("SELECT 1 FROM sqlite_temp_schema WHERE type = 'table' AND name = 'cover_clock'");
|
|
632
|
+
if (logged.length === 0)
|
|
633
|
+
return null;
|
|
634
|
+
const [clock] = connection.rows('SELECT token, at FROM temp.cover_clock');
|
|
635
|
+
return { token: text(clock.token), at: number(clock.at) };
|
|
636
|
+
}
|
|
637
|
+
export function covering(connection, since) {
|
|
638
|
+
let log = coverLog(connection);
|
|
639
|
+
if (log === null) {
|
|
640
|
+
for (const statement of COVER_LOG)
|
|
641
|
+
connection.run(statement);
|
|
642
|
+
log = coverLog(connection);
|
|
643
|
+
}
|
|
644
|
+
if (since === null || since.token !== log.token) {
|
|
645
|
+
return {
|
|
646
|
+
log,
|
|
647
|
+
whole: true,
|
|
648
|
+
rooms: connection.rows(`${COVER_ROWS} ORDER BY r.locator`).map(coveredRow),
|
|
649
|
+
removed: [],
|
|
650
|
+
};
|
|
651
|
+
}
|
|
652
|
+
return {
|
|
653
|
+
log,
|
|
654
|
+
whole: false,
|
|
655
|
+
rooms: connection
|
|
656
|
+
.rows(`${COVER_ROWS} WHERE r.locator IN (SELECT locator FROM temp.cover_changes WHERE at > ?) ORDER BY r.locator`, [since.at])
|
|
657
|
+
.map(coveredRow),
|
|
658
|
+
removed: connection
|
|
659
|
+
.rows(`SELECT c.locator FROM temp.cover_changes c WHERE c.at > ?
|
|
660
|
+
AND NOT EXISTS (SELECT 1 FROM replica_rooms r WHERE r.locator = c.locator)`, [since.at])
|
|
661
|
+
.map((row) => text(row.locator)),
|
|
662
|
+
};
|
|
611
663
|
}
|
|
612
664
|
export function offlineMode(connection, locator) {
|
|
613
|
-
const [held] = connection.rows("SELECT json_extract(record, '$.replica.offline') AS offline FROM replica_rooms WHERE locator = ?", [locator]);
|
|
665
|
+
const [held] = connection.rows("SELECT json_extract(record, '$.declaration.replica.offline') AS offline FROM replica_rooms WHERE locator = ?", [locator]);
|
|
614
666
|
return text(held?.offline);
|
|
615
667
|
}
|
|
616
668
|
export function stagedLocators(connection) {
|
|
@@ -618,10 +670,7 @@ export function stagedLocators(connection) {
|
|
|
618
670
|
}
|
|
619
671
|
export function heldLocators(connection) {
|
|
620
672
|
return connection
|
|
621
|
-
.rows(`SELECT locator FROM replica_rooms
|
|
622
|
-
UNION SELECT locator FROM authored_room_drafts
|
|
623
|
-
UNION SELECT locator FROM authored_queues
|
|
624
|
-
UNION ${STAGED}`)
|
|
673
|
+
.rows(`SELECT locator FROM replica_rooms UNION ${STAGED}`)
|
|
625
674
|
.map((row) => text(row.locator));
|
|
626
675
|
}
|
|
627
676
|
export function demoted(connection) {
|
|
@@ -629,9 +678,11 @@ export function demoted(connection) {
|
|
|
629
678
|
WHERE json_extract(record, '$.model.status') = 'current'`);
|
|
630
679
|
return null;
|
|
631
680
|
}
|
|
632
|
-
export function facts(connection) {
|
|
681
|
+
export function facts(connection, names) {
|
|
633
682
|
const held = {};
|
|
634
|
-
for (const row of
|
|
683
|
+
for (const row of names === null
|
|
684
|
+
? connection.rows('SELECT name, value FROM replica_facts')
|
|
685
|
+
: connection.rows('SELECT name, value FROM replica_facts WHERE name IN (SELECT value FROM json_each(?))', [JSON.stringify(names)])) {
|
|
635
686
|
held[text(row.name)] = text(row.value);
|
|
636
687
|
}
|
|
637
688
|
return held;
|
|
@@ -640,10 +691,10 @@ export function presentation(connection, app) {
|
|
|
640
691
|
const [held] = connection.rows('SELECT value FROM replica_presentation WHERE app = ?', [app]);
|
|
641
692
|
return text(held?.value);
|
|
642
693
|
}
|
|
694
|
+
export function tablesOf(statements) {
|
|
695
|
+
return statements.flatMap((statement) => /^CREATE TABLE (\w+)/u.exec(statement)?.[1] ?? []);
|
|
696
|
+
}
|
|
643
697
|
export function ended(connection) {
|
|
644
|
-
for (const
|
|
645
|
-
|
|
646
|
-
if (table !== undefined)
|
|
647
|
-
connection.run(`DELETE FROM ${table}`);
|
|
648
|
-
}
|
|
698
|
+
for (const table of tablesOf(REPLICA_TABLES))
|
|
699
|
+
connection.run(`DELETE FROM ${table}`);
|
|
649
700
|
}
|
package/dist/surface.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { DocumentQuery, GroupQuery } from '@agentshouse/mdmodel';
|
|
2
2
|
import { type HistoryQuery } from './actions.js';
|
|
3
|
-
import type { Member, ServiceMode } from './adapter.js';
|
|
3
|
+
import type { ListedAgent, Member, RoomList, ServiceMode } from './adapter.js';
|
|
4
4
|
import type { WrittenBy } from './change.js';
|
|
5
5
|
import { type ChatDraftSurface, type ConversationEntry, type ConversationAgent, type ConversationOptions, type ConversationSurface, type ConversationView } from './conversation.js';
|
|
6
6
|
import type { UnsentWork } from './durability.js';
|
|
@@ -46,8 +46,8 @@ export type MdRuntime = {
|
|
|
46
46
|
resolve(room: string, path: string, destination: string): Promise<Resolution>;
|
|
47
47
|
binaryFile: BinaryFileSurface;
|
|
48
48
|
call(name: string, input: unknown): Promise<CallResult>;
|
|
49
|
+
answered(operation: string): Promise<boolean>;
|
|
49
50
|
reached(locator: string, roomVersion: string, path?: string): Promise<boolean>;
|
|
50
|
-
log(): string;
|
|
51
51
|
persistence(): boolean;
|
|
52
52
|
retry(): Promise<void>;
|
|
53
53
|
cleanUp(): Promise<number>;
|
|
@@ -71,13 +71,15 @@ export type MdRuntime = {
|
|
|
71
71
|
(topic: 'conversation', conversation: string, options: ConversationOptions): Promise<Observation<ConversationView>>;
|
|
72
72
|
(topic: 'conversations'): Promise<Observation<readonly ConversationEntry[]>>;
|
|
73
73
|
(topic: 'agents'): Promise<Observation<readonly ConversationAgent[]>>;
|
|
74
|
+
(topic: 'listed-agents'): Promise<Observation<readonly ListedAgent[]>>;
|
|
75
|
+
(topic: 'room-list'): Promise<Observation<RoomList | null>>;
|
|
74
76
|
(topic: 'figures'): Promise<Observation<FiguresResult>>;
|
|
75
77
|
(topic: 'holdings'): Promise<Observation<Holdings>>;
|
|
76
78
|
(topic: 'read', name: string, input: unknown): Promise<Observation<ObservedRead>>;
|
|
77
79
|
};
|
|
78
80
|
reauthorize(): Promise<void>;
|
|
79
81
|
};
|
|
80
|
-
export type RuntimeTopic = 'rooms' | 'readiness' | 'connection-refusal' | 'storage-loss' | 'sync-status' | 'service-mode' | 'member' | 'authority-changes' | 'query' | 'queue' | 'room-drafts' | 'presentation' | 'conversation' | 'conversations' | 'agents' | 'figures' | 'holdings' | 'read';
|
|
82
|
+
export type RuntimeTopic = 'rooms' | 'readiness' | 'connection-refusal' | 'storage-loss' | 'sync-status' | 'service-mode' | 'member' | 'authority-changes' | 'query' | 'queue' | 'room-drafts' | 'presentation' | 'conversation' | 'conversations' | 'agents' | 'listed-agents' | 'room-list' | 'figures' | 'holdings' | 'read';
|
|
81
83
|
export type ComposedRuntime = RuntimeView & {
|
|
82
84
|
seed(entry: EntrySeed): void;
|
|
83
85
|
stop(): Promise<void>;
|
package/dist/surface.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,
|
|
1
|
+
{"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
|
package/dist/surface.js
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
import { called, located, readHistory, resolveReference } from './actions.js';
|
|
2
|
-
import { chatDraftSurface, conversationSurface, watchConversation, watchConversationAgents, watchConversationList, } from './conversation.js';
|
|
1
|
+
import { answeredCall, called, located, readHistory, resolveReference, } from './actions.js';
|
|
2
|
+
import { chatDraftSurface, conversationSurface, watchConversation, watchConversationAgents, watchListedAgents, watchConversationList, } from './conversation.js';
|
|
3
|
+
import { uncaught } from './failure.js';
|
|
4
|
+
import { watchRoomList } from './room-list.js';
|
|
3
5
|
import { CLEANED_TOPIC, watchHoldings } from './holdings.js';
|
|
4
6
|
import { reachedBy, writtenAfter } from './install.js';
|
|
5
7
|
import { declarationOf, listingNow, modelIn, shownRooms } from './listing.js';
|
|
6
8
|
import { stop } from './lifecycle.js';
|
|
7
9
|
import { locked, lockedRooms, watchLocks } from './locks.js';
|
|
8
|
-
import { modelTypes
|
|
10
|
+
import { modelTypes } from './model.js';
|
|
9
11
|
import { observing } from './observation.js';
|
|
10
12
|
import { watchReadiness } from './preparation.js';
|
|
11
13
|
import { planned, rowsQuery, searched, watchPlan, watchPlanned } from './queries.js';
|
|
12
14
|
import { narrowed, } from './reach.js';
|
|
13
15
|
import { presentationSurface, roomDraftSurface, watchPresentation, watchRoomDrafts, } from './room-drafts.js';
|
|
14
|
-
import { binaryFileSurface, saveParts, saveRoomDrafts, } from './saves.js';
|
|
16
|
+
import { binaryFileSurface, conversationFiles, saveParts, saveRoomDrafts, } from './saves.js';
|
|
15
17
|
import { keepEntrySeed } from './seed.js';
|
|
16
|
-
import { AUTHORITY_TOPIC, emitKnownRooms, entriesOf, MEMBER_TOPIC, queueTopic, REFUSAL_TOPIC, ROOMS_TOPIC, SERVICE_MODE_TOPIC, STATUS_TOPIC, STORAGE_LOSS_TOPIC, } from './shown.js';
|
|
18
|
+
import { AUTHORITY_TOPIC, emitKnownRooms, emitStorageLoss, entriesOf, MEMBER_TOPIC, queueTopic, REFUSAL_TOPIC, ROOMS_TOPIC, SERVICE_MODE_TOPIC, STATUS_TOPIC, STORAGE_LOSS_TOPIC, storageLossNow, } from './shown.js';
|
|
17
19
|
import { OPENING_LANE, sync } from './sync.js';
|
|
18
20
|
function told(store, topic, deliver, current) {
|
|
19
21
|
const watcher = store.watch(topic, deliver);
|
|
@@ -27,7 +29,7 @@ function watchRooms(runtime, deliver) {
|
|
|
27
29
|
return () => {
|
|
28
30
|
watcher.stop();
|
|
29
31
|
if (store.watching(ROOMS_TOPIC, 'ready').length === 0)
|
|
30
|
-
store.
|
|
32
|
+
store.roomsShown.show(null);
|
|
31
33
|
};
|
|
32
34
|
}
|
|
33
35
|
function watchMember({ store }, deliver) {
|
|
@@ -38,7 +40,7 @@ function watchMember({ store }, deliver) {
|
|
|
38
40
|
.then(({ member }) => {
|
|
39
41
|
if (watcher.held())
|
|
40
42
|
deliver(member);
|
|
41
|
-
},
|
|
43
|
+
}, uncaught);
|
|
42
44
|
return watcher.stop;
|
|
43
45
|
}
|
|
44
46
|
function watchQueue(runtime, locator, deliver) {
|
|
@@ -66,6 +68,10 @@ function watching(runtime) {
|
|
|
66
68
|
return watchConversationList(conversations, deliver);
|
|
67
69
|
if (topic === 'agents')
|
|
68
70
|
return watchConversationAgents(conversations, deliver);
|
|
71
|
+
if (topic === 'listed-agents')
|
|
72
|
+
return watchListedAgents(conversations, deliver);
|
|
73
|
+
if (topic === 'room-list')
|
|
74
|
+
return watchRoomList(runtime, deliver);
|
|
69
75
|
if (topic === 'figures')
|
|
70
76
|
return figures.watch(deliver, fail);
|
|
71
77
|
if (topic === 'holdings')
|
|
@@ -83,7 +89,7 @@ function watching(runtime) {
|
|
|
83
89
|
return told(store, REFUSAL_TOPIC, deliver, session.refusal);
|
|
84
90
|
}
|
|
85
91
|
if (topic === 'storage-loss') {
|
|
86
|
-
return told(store, STORAGE_LOSS_TOPIC, deliver,
|
|
92
|
+
return told(store, STORAGE_LOSS_TOPIC, deliver, storageLossNow(runtime));
|
|
87
93
|
}
|
|
88
94
|
if (topic === 'sync-status') {
|
|
89
95
|
return told(store, STATUS_TOPIC, deliver, store.device.now().status);
|
|
@@ -116,19 +122,17 @@ function roomsOnce(runtime) {
|
|
|
116
122
|
async function typesOf(runtime, locator) {
|
|
117
123
|
const { store, builtIn } = runtime;
|
|
118
124
|
const held = (await store.rooms([locator])).get(locator);
|
|
119
|
-
const
|
|
120
|
-
const room = fenced ? undefined : declarationOf(runtime, locator, held)?.room;
|
|
125
|
+
const room = declarationOf(runtime, locator, held)?.room;
|
|
121
126
|
return {
|
|
122
|
-
collection: modelTypes(
|
|
127
|
+
collection: modelTypes(modelIn(runtime, locator, held)),
|
|
123
128
|
typedSelection: (room?.typedSelection ?? null) === null ? null : modelTypes(builtIn),
|
|
124
129
|
};
|
|
125
130
|
}
|
|
126
131
|
async function reauthorized(runtime) {
|
|
127
|
-
const { store, socket
|
|
132
|
+
const { store, socket } = runtime;
|
|
128
133
|
const { refusal } = socket.session.now();
|
|
129
134
|
if (refusal === null || !refusal.reauthorizationOffered)
|
|
130
135
|
return;
|
|
131
|
-
journal.record('connection reauthorize');
|
|
132
136
|
await socket.lanes.current();
|
|
133
137
|
await store.written();
|
|
134
138
|
socket.session.set({ authorization: undefined, paused: false });
|
|
@@ -138,7 +142,7 @@ async function reauthorized(runtime) {
|
|
|
138
142
|
await socket.lanes.task(OPENING_LANE, () => socket.authorize());
|
|
139
143
|
}
|
|
140
144
|
function mdRuntime(runtime, watch) {
|
|
141
|
-
const { store, socket,
|
|
145
|
+
const { store, socket, shell, conversations, lastAnswers } = runtime;
|
|
142
146
|
return {
|
|
143
147
|
loaded: () => store.open().then(() => undefined),
|
|
144
148
|
rooms: () => roomsOnce(runtime),
|
|
@@ -146,21 +150,21 @@ function mdRuntime(runtime, watch) {
|
|
|
146
150
|
search: (input) => searched(runtime, input, null),
|
|
147
151
|
types: (locator) => typesOf(runtime, locator),
|
|
148
152
|
roomDraft: roomDraftSurface(runtime),
|
|
149
|
-
conversation: conversationSurface(conversations),
|
|
153
|
+
conversation: conversationSurface(conversations, conversationFiles(runtime)),
|
|
150
154
|
chatDraft: chatDraftSurface(conversations),
|
|
151
155
|
presentation: presentationSurface(runtime),
|
|
152
|
-
save: (room, named, writtenBy) =>
|
|
153
|
-
saveParts: (room, parts, writtenBy) =>
|
|
156
|
+
save: (room, named, writtenBy) => saveRoomDrafts(runtime, room, named, writtenBy),
|
|
157
|
+
saveParts: (room, parts, writtenBy) => saveParts(runtime, room, parts, writtenBy),
|
|
154
158
|
history: (locator, path, query) => readHistory(runtime, locator, path, query),
|
|
155
159
|
resolve: (room, path, destination) => resolveReference(runtime, room, path, destination),
|
|
156
160
|
binaryFile: binaryFileSurface(runtime),
|
|
157
161
|
call: (name, input) => called(runtime, name, input),
|
|
162
|
+
answered: (operation) => answeredCall(runtime, operation),
|
|
158
163
|
async reached(locator, roomVersion, path) {
|
|
159
164
|
return path === undefined
|
|
160
165
|
? reachedBy(runtime, locator, roomVersion)
|
|
161
166
|
: writtenAfter(runtime, locator, roomVersion, path);
|
|
162
167
|
},
|
|
163
|
-
log: () => journal.export(),
|
|
164
168
|
async cleanUp() {
|
|
165
169
|
const freed = await store.ask({ kind: 'opened.clean' });
|
|
166
170
|
const tidied = (await shell.cleanUp?.()) ?? 0;
|
|
@@ -174,8 +178,7 @@ function mdRuntime(runtime, watch) {
|
|
|
174
178
|
},
|
|
175
179
|
persistence: () => store.device.now().persistence === 'granted',
|
|
176
180
|
async retry() {
|
|
177
|
-
|
|
178
|
-
socket.rooms.standAll({ unpreparable: false });
|
|
181
|
+
store.prepareAgain();
|
|
179
182
|
store.readiness.queue();
|
|
180
183
|
if (store.space.full())
|
|
181
184
|
await store.space.probe();
|
|
@@ -185,7 +188,7 @@ function mdRuntime(runtime, watch) {
|
|
|
185
188
|
};
|
|
186
189
|
}
|
|
187
190
|
export function composedRuntime(runtime) {
|
|
188
|
-
const { store
|
|
191
|
+
const { store } = runtime;
|
|
189
192
|
const watch = watching(runtime);
|
|
190
193
|
const md = mdRuntime(runtime, watch);
|
|
191
194
|
const reachable = {
|
|
@@ -211,8 +214,7 @@ export function composedRuntime(runtime) {
|
|
|
211
214
|
if (answer === store.device.now().persistence)
|
|
212
215
|
return;
|
|
213
216
|
store.device.set({ persistence: answer });
|
|
214
|
-
|
|
215
|
-
store.readiness.queue();
|
|
217
|
+
emitStorageLoss(runtime);
|
|
216
218
|
},
|
|
217
219
|
within(reach, port) {
|
|
218
220
|
if (store.space.full())
|
package/dist/sync.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export declare function reload(runtime: Runtime, room: DiscoveredRoom, local: Ru
|
|
|
13
13
|
export declare function finishOpening(runtime: Runtime, progress: CycleProgress, live: Live): Promise<void>;
|
|
14
14
|
export declare function sync(runtime: Runtime, attempt: Attempt, found: Discovery | null): Promise<void>;
|
|
15
15
|
export declare function resynchronize(runtime: Runtime): Promise<void>;
|
|
16
|
-
export declare function countAuthorityChange({ store, socket, lastAnswers }: Runtime): void;
|
|
16
|
+
export declare function countAuthorityChange({ store, socket, lastAnswers }: Runtime, listed?: Promise<unknown>): void;
|
|
17
17
|
export declare function changeAuthority(runtime: Runtime, change: AuthorityChange): Promise<void>;
|
|
18
18
|
export declare function applyRoom(runtime: Runtime, change: RoomChange): Promise<void>;
|
|
19
19
|
//# sourceMappingURL=sync.d.ts.map
|
package/dist/sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,cAAc,EACd,SAAS,EACT,UAAU,EACX,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,cAAc,EACd,SAAS,EACT,UAAU,EACX,MAAM,cAAc,CAAC;AAMtB,OAAO,EASL,KAAK,MAAM,EACX,KAAK,QAAQ,EACd,MAAM,cAAc,CAAC;AAStB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAU5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,YAAY,CAAC;AAG5D,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC;AAE7D,eAAO,MAAM,YAAY,YAAY,CAAC;AA2FtC,wBAAgB,QAAQ,CACtB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,aAAa,GACxB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAI1B;AAED,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,IAAI,CAAC,CA+Bf;AA2GD,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,MAAM,iBAmBhB;AAED,wBAAsB,MAAM,CAC1B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,IAAI,iBA0BX;AAsDD,wBAAsB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,iBA8BxF;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC/F;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB7D;AAED,wBAAgB,oBAAoB,CAClC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO,EACvC,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,QAM1B;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BxF;AAyDD,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA4D7E"}
|