@agentshouse/mdruntime 0.1.0-cb1f56e16291b → 0.1.0-cb3bb3b233fa1
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 +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 +113 -81
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts +3 -11
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +20 -60
- 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 +9 -5
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +204 -85
- 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 +2 -1
- package/dist/chain.d.ts.map +1 -1
- 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 +5 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +7 -2
- 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 +30 -22
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +39 -20
- package/dist/collection.d.ts +26 -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 +9 -7
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +252 -318
- package/dist/connection.d.ts +5 -141
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +111 -5282
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +1 -1
- package/dist/conversation-live.d.ts +150 -0
- package/dist/conversation-live.d.ts.map +1 -0
- package/dist/conversation-live.js +259 -0
- package/dist/conversation-row.d.ts +40 -0
- package/dist/conversation-row.d.ts.map +1 -0
- package/dist/conversation-row.js +66 -0
- package/dist/conversation.d.ts +62 -43
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +987 -902
- 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 +10 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +150 -0
- package/dist/durability.d.ts +19 -0
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +4 -0
- package/dist/entry.d.ts +2 -2
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +18 -9
- 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 +199 -0
- package/dist/file.d.ts +1 -1
- package/dist/file.d.ts.map +1 -1
- package/dist/file.js +3 -2
- 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 -4
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +72 -28
- package/dist/identity.d.ts +0 -1
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +0 -3
- package/dist/index.d.ts +32 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -5
- package/dist/install.d.ts +60 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +537 -0
- package/dist/lifecycle.d.ts +7 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +282 -0
- package/dist/listing.d.ts +52 -0
- package/dist/listing.d.ts.map +1 -0
- package/dist/listing.js +152 -0
- package/dist/live.d.ts +8 -6
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +110 -31
- 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 +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 +6 -1
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +68 -17
- package/dist/memory.d.ts +11 -3
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +132 -33
- package/dist/messages.d.ts +33 -3
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +98 -27
- package/dist/model.d.ts +2 -10
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +0 -14
- package/dist/models.d.ts +10 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +153 -0
- 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 +4 -0
- package/dist/opening.d.ts.map +1 -0
- package/dist/opening.js +53 -0
- package/dist/outcome.d.ts +17 -2
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +35 -2
- package/dist/overlay.d.ts +7 -2
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +48 -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 +4 -0
- package/dist/parts.d.ts.map +1 -0
- package/dist/parts.js +13 -0
- package/dist/paths.d.ts +1 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +22 -0
- package/dist/preparation.d.ts +41 -0
- package/dist/preparation.d.ts.map +1 -0
- package/dist/preparation.js +314 -0
- 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 +16 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +308 -0
- package/dist/query.d.ts +13 -213
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -524
- package/dist/questions.d.ts +30 -0
- package/dist/questions.d.ts.map +1 -0
- package/dist/questions.js +116 -0
- 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 +10 -10
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +235 -120
- package/dist/react.d.ts +17 -3
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +33 -1
- package/dist/read.d.ts +7 -0
- package/dist/read.d.ts.map +1 -0
- package/dist/read.js +17 -0
- package/dist/readiness.d.ts +9 -4
- package/dist/readiness.d.ts.map +1 -1
- package/dist/readiness.js +3 -5
- 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 +3 -1
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +38 -8
- package/dist/refresh.d.ts +1 -1
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +10 -22
- 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 +11 -16
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +66 -35
- 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 +32 -9
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +273 -66
- package/dist/room-drafts.d.ts +24 -0
- package/dist/room-drafts.d.ts.map +1 -0
- package/dist/room-drafts.js +220 -0
- 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 +16 -23
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +49 -191
- 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 +42 -86
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +332 -228
- package/dist/saves.d.ts +34 -0
- package/dist/saves.d.ts.map +1 -0
- package/dist/saves.js +437 -0
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +1 -1
- 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 +1 -6
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +13 -95
- package/dist/shown.d.ts +33 -0
- package/dist/shown.d.ts.map +1 -0
- package/dist/shown.js +309 -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 +59 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +93 -0
- package/dist/status.d.ts +0 -2
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +0 -6
- package/dist/store/installs.d.ts +30 -0
- package/dist/store/installs.d.ts.map +1 -0
- package/dist/store/installs.js +40 -0
- package/dist/store/readiness.d.ts +11 -0
- package/dist/store/readiness.d.ts.map +1 -0
- package/dist/store/readiness.js +68 -0
- package/dist/store/records.d.ts +223 -0
- package/dist/store/records.d.ts.map +1 -0
- package/dist/store/records.js +465 -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/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 +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 +115 -152
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +171 -395
- package/dist/stored.d.ts +72 -67
- package/dist/stored.d.ts.map +1 -1
- package/dist/stored.js +317 -166
- package/dist/surface.d.ts +90 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +225 -0
- package/dist/sync.d.ts +19 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +536 -0
- package/dist/tables.d.ts +112 -89
- package/dist/tables.d.ts.map +1 -1
- package/dist/tables.js +197 -283
- package/dist/tallies.d.ts +18 -0
- package/dist/tallies.d.ts.map +1 -0
- package/dist/tallies.js +128 -0
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +9 -12
- package/dist/windows.d.ts +1 -12
- package/dist/windows.d.ts.map +1 -1
- package/dist/windows.js +2 -75
- package/dist/wire.d.ts +68 -7
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +23 -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/fence.d.ts +0 -6
- package/dist/fence.d.ts.map +0 -1
- package/dist/fence.js +0 -10
- package/dist/job.d.ts +0 -14
- package/dist/job.d.ts.map +0 -1
- package/dist/job.js +0 -28
- package/dist/log.d.ts +0 -5
- package/dist/log.d.ts.map +0 -1
- package/dist/log.js +0 -14
- package/dist/phrase.d.ts +0 -3
- package/dist/phrase.d.ts.map +0 -1
- package/dist/phrase.js +0 -8
package/dist/live.js
CHANGED
|
@@ -1,37 +1,40 @@
|
|
|
1
|
-
import { changeOf, digestOf, } from './observation.js';
|
|
2
|
-
import {
|
|
1
|
+
import { changeOf, digestOf, keyedAt, keyedInto, samePending, unchanged, } from './observation.js';
|
|
2
|
+
import { uncaught } from './failure.js';
|
|
3
|
+
import { roomsOfReach } from './rows.js';
|
|
3
4
|
function narrowed(plan) {
|
|
4
5
|
return (plan.paths !== null &&
|
|
5
6
|
plan.hop === null &&
|
|
6
7
|
plan.backlinks === null &&
|
|
7
8
|
!(plan.shape.kind === 'documents' && plan.shape.backlinks));
|
|
8
9
|
}
|
|
9
|
-
function
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return (plan.reach.rooms.includes(locator) ||
|
|
17
|
-
plan.reach.documents.some((document) => roomOfKey(document) === locator));
|
|
10
|
+
export function readerOf(plan) {
|
|
11
|
+
const locked = new Set(plan.locked);
|
|
12
|
+
const named = plan.rooms === null ? null : new Set(plan.rooms);
|
|
13
|
+
const reached = plan.reach === null ? null : roomsOfReach(plan.reach);
|
|
14
|
+
return (locator) => !locked.has(locator) &&
|
|
15
|
+
(named === null || named.has(locator)) &&
|
|
16
|
+
(reached === null || reached.has(locator));
|
|
18
17
|
}
|
|
19
|
-
function affected(plan, set) {
|
|
20
|
-
if (set.rooms.some(
|
|
18
|
+
function affected({ plan, reads }, set) {
|
|
19
|
+
if (set.rooms.some(reads))
|
|
21
20
|
return true;
|
|
22
21
|
const paths = narrowed(plan) ? new Set(plan.paths) : null;
|
|
23
|
-
return set.documents.some(({ locator, path }) => reads(
|
|
22
|
+
return set.documents.some(({ locator, path }) => reads(locator) && (paths === null || path === null || paths.has(path)));
|
|
24
23
|
}
|
|
25
|
-
function shown(entry) {
|
|
26
|
-
const cover = entry.cover();
|
|
24
|
+
function shown(entry, held) {
|
|
25
|
+
const cover = entry.cover(held);
|
|
27
26
|
return JSON.stringify('pending' in cover ? cover : cover.coverage);
|
|
28
27
|
}
|
|
29
|
-
export function createLiveQueries(run) {
|
|
28
|
+
export function createLiveQueries(run, holding) {
|
|
30
29
|
const entries = new Map();
|
|
31
30
|
let closed = false;
|
|
31
|
+
let recoveringNow = false;
|
|
32
|
+
let recoveringAll = false;
|
|
33
|
+
const recovering = new Set();
|
|
32
34
|
function deliver(entry, next) {
|
|
33
35
|
const previous = entry.digest;
|
|
34
36
|
entry.digest = digestOf(next);
|
|
37
|
+
entry.pending = 'pending' in entry.digest ? entry.digest.pending : null;
|
|
35
38
|
entry.covered = JSON.stringify('pending' in next.result ? next.result : next.result.coverage);
|
|
36
39
|
const change = previous === undefined ? null : changeOf(previous, next);
|
|
37
40
|
if (change !== null) {
|
|
@@ -44,6 +47,13 @@ export function createLiveQueries(run) {
|
|
|
44
47
|
}
|
|
45
48
|
entry.fresh.clear();
|
|
46
49
|
}
|
|
50
|
+
async function delivered(entry) {
|
|
51
|
+
const { current, ...next } = await run(entry.plan, async () => entry.cover(await holding()));
|
|
52
|
+
if (closed || entry.listeners.size === 0)
|
|
53
|
+
return null;
|
|
54
|
+
deliver(entry, next);
|
|
55
|
+
return current;
|
|
56
|
+
}
|
|
47
57
|
function schedule(entry) {
|
|
48
58
|
if (closed || entry.listeners.size === 0)
|
|
49
59
|
return;
|
|
@@ -56,16 +66,17 @@ export function createLiveQueries(run) {
|
|
|
56
66
|
try {
|
|
57
67
|
for (;;) {
|
|
58
68
|
entry.dirty = false;
|
|
59
|
-
const
|
|
60
|
-
if (
|
|
69
|
+
const current = await delivered(entry);
|
|
70
|
+
if (current === null)
|
|
61
71
|
return;
|
|
62
|
-
|
|
63
|
-
if (
|
|
72
|
+
const held = await holding();
|
|
73
|
+
if (entry.fresh.size > 0 || (entry.dirty && !current()))
|
|
74
|
+
continue;
|
|
75
|
+
if (shown(entry, held) === entry.covered)
|
|
64
76
|
break;
|
|
65
77
|
}
|
|
66
78
|
}
|
|
67
79
|
catch (error) {
|
|
68
|
-
entry.dirty = false;
|
|
69
80
|
const unanswered = [...entry.fresh.values()];
|
|
70
81
|
entry.fresh.clear();
|
|
71
82
|
for (const failed of unanswered)
|
|
@@ -76,31 +87,99 @@ export function createLiveQueries(run) {
|
|
|
76
87
|
}
|
|
77
88
|
})();
|
|
78
89
|
}
|
|
90
|
+
function pendingMoved(entry, held, rooms) {
|
|
91
|
+
const { pending } = entry;
|
|
92
|
+
if (pending === null || pending.size === 0 || entry.running || entry.fresh.size > 0) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
const at = entry.pendingAt(held, rooms);
|
|
96
|
+
const change = at === null ? null : keyedAt(pending, at, samePending);
|
|
97
|
+
if (change === null || change.removed.length === pending.size)
|
|
98
|
+
return false;
|
|
99
|
+
keyedInto(pending, change);
|
|
100
|
+
entry.covered = '';
|
|
101
|
+
if (unchanged(change))
|
|
102
|
+
return true;
|
|
103
|
+
for (const listener of entry.ready)
|
|
104
|
+
listener({ pending: change });
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
function recovered(locators) {
|
|
108
|
+
if (locators === undefined)
|
|
109
|
+
recoveringAll = true;
|
|
110
|
+
else
|
|
111
|
+
for (const locator of locators)
|
|
112
|
+
recovering.add(locator);
|
|
113
|
+
if (recoveringNow)
|
|
114
|
+
return;
|
|
115
|
+
recoveringNow = true;
|
|
116
|
+
void (async () => {
|
|
117
|
+
try {
|
|
118
|
+
while ((recoveringAll || recovering.size > 0) && !closed) {
|
|
119
|
+
const all = recoveringAll;
|
|
120
|
+
const touched = [...recovering];
|
|
121
|
+
recoveringAll = false;
|
|
122
|
+
recovering.clear();
|
|
123
|
+
const reached = [...entries.values()].filter((entry) => all || touched.some(entry.reads));
|
|
124
|
+
for (const entry of reached) {
|
|
125
|
+
if (entry.running)
|
|
126
|
+
entry.dirty = true;
|
|
127
|
+
}
|
|
128
|
+
const waiting = reached.filter((entry) => !entry.running);
|
|
129
|
+
if (waiting.length === 0)
|
|
130
|
+
continue;
|
|
131
|
+
const held = await holding();
|
|
132
|
+
for (const entry of waiting) {
|
|
133
|
+
if (entry.running)
|
|
134
|
+
continue;
|
|
135
|
+
const read = all ? [] : touched.filter(entry.reads);
|
|
136
|
+
if (read.length > 0 && pendingMoved(entry, held, read))
|
|
137
|
+
continue;
|
|
138
|
+
if (entry.digest === undefined || shown(entry, held) !== entry.covered)
|
|
139
|
+
schedule(entry);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
uncaught(error);
|
|
145
|
+
}
|
|
146
|
+
finally {
|
|
147
|
+
recoveringNow = false;
|
|
148
|
+
}
|
|
149
|
+
})();
|
|
150
|
+
}
|
|
79
151
|
return {
|
|
80
152
|
touched(set) {
|
|
153
|
+
const pending = new Set();
|
|
81
154
|
for (const entry of entries.values()) {
|
|
82
|
-
if (affected(entry
|
|
83
|
-
schedule(entry);
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
recover() {
|
|
87
|
-
for (const entry of entries.values()) {
|
|
88
|
-
if (entry.running)
|
|
155
|
+
if (!affected(entry, set))
|
|
89
156
|
continue;
|
|
90
|
-
if (entry.
|
|
157
|
+
if (entry.pending === null || entry.running) {
|
|
91
158
|
schedule(entry);
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
for (const locator of set.rooms)
|
|
162
|
+
pending.add(locator);
|
|
163
|
+
for (const { locator } of set.documents)
|
|
164
|
+
pending.add(locator);
|
|
92
165
|
}
|
|
166
|
+
if (pending.size > 0)
|
|
167
|
+
recovered([...pending]);
|
|
93
168
|
},
|
|
94
|
-
|
|
169
|
+
recover: recovered,
|
|
170
|
+
watch(plan, identity, cover, pendingAt, listener, failed) {
|
|
95
171
|
let entry = entries.get(identity);
|
|
96
172
|
if (entry === undefined) {
|
|
97
173
|
entry = {
|
|
98
174
|
plan,
|
|
175
|
+
reads: readerOf(plan),
|
|
99
176
|
cover,
|
|
177
|
+
pendingAt,
|
|
100
178
|
listeners: new Set(),
|
|
101
179
|
fresh: new Map(),
|
|
102
180
|
ready: new Set(),
|
|
103
181
|
digest: undefined,
|
|
182
|
+
pending: null,
|
|
104
183
|
covered: '',
|
|
105
184
|
dirty: false,
|
|
106
185
|
running: false,
|
package/dist/loaded.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { BuildFile } from './client.js';
|
|
2
|
+
export declare function parsed(file: Blob | null): Promise<unknown>;
|
|
3
|
+
export declare function perBuild<T>(buildFile: BuildFile, key: string, make: () => Promise<T>): Promise<T>;
|
|
4
|
+
export declare function loaded<T>(buildFile: BuildFile, name: string, read?: (file: Blob | null) => Promise<unknown>): Promise<T | null>;
|
|
5
|
+
//# sourceMappingURL=loaded.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loaded.d.ts","sourceRoot":"","sources":["../src/loaded.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAc7C,wBAAsB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAEhE;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAYjG;AAED,wBAAgB,MAAM,CAAC,CAAC,EACtB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,OAAO,CAAC,OAAO,CAAY,GACvD,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAEnB"}
|
package/dist/loaded.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
9
|
+
const holdings = new WeakMap();
|
|
10
|
+
async function imported(file) {
|
|
11
|
+
if (file === null)
|
|
12
|
+
return null;
|
|
13
|
+
const address = URL.createObjectURL(file);
|
|
14
|
+
try {
|
|
15
|
+
return await import(__rewriteRelativeImportExtension(address));
|
|
16
|
+
}
|
|
17
|
+
finally {
|
|
18
|
+
URL.revokeObjectURL(address);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export async function parsed(file) {
|
|
22
|
+
return file === null ? null : JSON.parse(await file.text());
|
|
23
|
+
}
|
|
24
|
+
export function perBuild(buildFile, key, make) {
|
|
25
|
+
let named = holdings.get(buildFile);
|
|
26
|
+
if (named === undefined) {
|
|
27
|
+
named = new Map();
|
|
28
|
+
holdings.set(buildFile, named);
|
|
29
|
+
}
|
|
30
|
+
const holding = named.get(key);
|
|
31
|
+
if (holding !== undefined)
|
|
32
|
+
return holding;
|
|
33
|
+
const making = make();
|
|
34
|
+
named.set(key, making);
|
|
35
|
+
making.catch(() => named.delete(key));
|
|
36
|
+
return making;
|
|
37
|
+
}
|
|
38
|
+
export function loaded(buildFile, name, read = imported) {
|
|
39
|
+
return perBuild(buildFile, name, () => buildFile(name).then(read));
|
|
40
|
+
}
|
package/dist/locks.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Runtime } from './runtime.js';
|
|
2
|
+
export declare function locked({ store, presence }: Runtime, locator: string): Promise<boolean>;
|
|
3
|
+
export declare function lockedRooms({ store, presence }: Runtime): Promise<readonly string[]>;
|
|
4
|
+
export declare function relocked(runtime: Runtime, before: readonly string[]): Promise<void>;
|
|
5
|
+
export declare function connectionLost(runtime: Runtime): void;
|
|
6
|
+
export declare function watchLocks({ store }: Runtime, notify: () => void): () => void;
|
|
7
|
+
//# sourceMappingURL=locks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locks.d.ts","sourceRoot":"","sources":["../src/locks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,wBAAsB,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5F;AAED,wBAAsB,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAG1F;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,iBAKzE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,QAU9C;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAE7E"}
|
package/dist/locks.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { uncaught } from './failure.js';
|
|
2
|
+
import { emitRooms, LOCKS_TOPIC } from './shown.js';
|
|
3
|
+
export async function locked({ store, presence }, locator) {
|
|
4
|
+
return presence.locked(locator, async () => (await store.open()).offline(locator));
|
|
5
|
+
}
|
|
6
|
+
export async function lockedRooms({ store, presence }) {
|
|
7
|
+
const { rooms, locking } = await store.covering();
|
|
8
|
+
return presence.lockedAmong(rooms, locking);
|
|
9
|
+
}
|
|
10
|
+
export async function relocked(runtime, before) {
|
|
11
|
+
const after = await lockedRooms(runtime);
|
|
12
|
+
if (JSON.stringify(after) === JSON.stringify(before))
|
|
13
|
+
return;
|
|
14
|
+
emitRooms(runtime);
|
|
15
|
+
runtime.store.tell(LOCKS_TOPIC, undefined);
|
|
16
|
+
}
|
|
17
|
+
export function connectionLost(runtime) {
|
|
18
|
+
const { socket, presence } = runtime;
|
|
19
|
+
if (socket.closed())
|
|
20
|
+
return;
|
|
21
|
+
presence.connectionLost(() => {
|
|
22
|
+
if (socket.isOpen() || socket.closed())
|
|
23
|
+
return;
|
|
24
|
+
void lockedRooms(runtime).then((before) => {
|
|
25
|
+
presence.lapse();
|
|
26
|
+
return relocked(runtime, before);
|
|
27
|
+
}, uncaught);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
export function watchLocks({ store }, notify) {
|
|
31
|
+
return store.watch(LOCKS_TOPIC, notify).stop;
|
|
32
|
+
}
|
package/dist/lost.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Runtime } from './runtime.js';
|
|
2
|
+
export declare function eraseFenced({ store }: Runtime, locators: readonly string[]): Promise<void>;
|
|
3
|
+
export declare function fenceLive(runtime: Runtime, locators: readonly string[]): void;
|
|
4
|
+
export declare function loseRooms(runtime: Runtime, locators: readonly string[]): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=lost.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lost.d.ts","sourceRoot":"","sources":["../src/lost.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAK5C,wBAAsB,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,iBAIhF;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,QAMtE;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,iBA+B5E"}
|
package/dist/lost.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { changeSet, mergeChangeSets } from './change-set.js';
|
|
2
|
+
import { ERASE_BATCH } from './install.js';
|
|
3
|
+
import { unpair } from './queue.js';
|
|
4
|
+
import { recoverReads } from './shown.js';
|
|
5
|
+
import { yielded } from './turn.js';
|
|
6
|
+
export async function eraseFenced({ store }, locators) {
|
|
7
|
+
for (const locator of locators) {
|
|
8
|
+
while (await store.durably((local) => local.erase(locator, ERASE_BATCH)))
|
|
9
|
+
await yielded();
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export function fenceLive(runtime, locators) {
|
|
13
|
+
const { store, socket, presence } = runtime;
|
|
14
|
+
for (const locator of new Set(locators)) {
|
|
15
|
+
if (!presence.lose(locator, socket.session.now().discoveries))
|
|
16
|
+
continue;
|
|
17
|
+
store.forget(locator);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export async function loseRooms(runtime, locators) {
|
|
21
|
+
const { store, presence } = runtime;
|
|
22
|
+
fenceLive(runtime, locators);
|
|
23
|
+
const fresh = [...new Set(locators)].filter((locator) => presence.writing(locator));
|
|
24
|
+
if (fresh.length === 0)
|
|
25
|
+
return;
|
|
26
|
+
let held = [];
|
|
27
|
+
try {
|
|
28
|
+
await store.durably(async (local) => {
|
|
29
|
+
held = await local.roomDrafts();
|
|
30
|
+
await local.fence(fresh);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
for (const locator of fresh)
|
|
35
|
+
presence.unwritten(locator);
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
store.changed(mergeChangeSets(fresh.map((locator) => changeSet(locator, {
|
|
40
|
+
documents: null,
|
|
41
|
+
room: true,
|
|
42
|
+
queue: true,
|
|
43
|
+
drafts: held.filter((draft) => draft.locator === locator).map(({ path }) => path),
|
|
44
|
+
}))));
|
|
45
|
+
recoverReads(runtime, fresh);
|
|
46
|
+
}
|
|
47
|
+
await unpair(runtime);
|
|
48
|
+
await eraseFenced(runtime, fresh);
|
|
49
|
+
}
|
package/dist/media.d.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import type { MdRuntimeClient } from './client.js';
|
|
2
2
|
import { type ShownAnswer } from './outcome.js';
|
|
3
3
|
export declare const ROOM_MEDIA = "room-media";
|
|
4
|
+
export declare const DIAGRAM = "md-diagram";
|
|
5
|
+
export declare const VIEWING = "ahc-viewer";
|
|
4
6
|
type Show = (room: string, path: string, revision?: string) => Promise<ShownAnswer>;
|
|
5
7
|
export declare function shownBy(show: Show, client: MdRuntimeClient): MdRuntimeClient;
|
|
6
|
-
export declare function
|
|
8
|
+
export declare function rendered(element: Element): boolean;
|
|
9
|
+
export declare function viewable(element: Element): boolean;
|
|
10
|
+
export declare function viewFile(client: MdRuntimeClient, media: Element): void;
|
|
11
|
+
export declare function defineRoomMedia(client: Promise<MdRuntimeClient> | MdRuntimeClient): void;
|
|
7
12
|
export {};
|
|
8
13
|
//# sourceMappingURL=media.d.ts.map
|
package/dist/media.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAEnE,eAAO,MAAM,UAAU,eAAe,CAAC;AAMvC,eAAO,MAAM,OAAO,eAAe,CAAC;AAEpC,eAAO,MAAM,OAAO,eAAe,CAAC;AA8BpC,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAIpF,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe,CAG5E;AAsBD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAElD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAMlD;AA4BD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAEtE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,GAAG,IAAI,CAkMxF"}
|
package/dist/media.js
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isAudioType, isImageType, isVideoType } from '@agentshouse/mdmodel';
|
|
2
|
+
import { loaded } from './loaded.js';
|
|
3
|
+
import { blobOf, UNCERTAIN } from './outcome.js';
|
|
2
4
|
export const ROOM_MEDIA = 'room-media';
|
|
5
|
+
const VIEWER = 'viewer';
|
|
6
|
+
const RENDERED = '.ahc, .ahc-markdown';
|
|
7
|
+
export const DIAGRAM = 'md-diagram';
|
|
8
|
+
export const VIEWING = 'ahc-viewer';
|
|
9
|
+
const PRESSED_ELSEWHERE = 'a[href], button, input, select, textarea, summary, label, [role="button"], [role="link"]';
|
|
3
10
|
const ATTRIBUTES = ['room', 'path', 'revision', 'width', 'height', 'alt'];
|
|
4
11
|
const LOADING = new Set(['room', 'path', 'revision']);
|
|
5
12
|
const NEARING = '600px 0px';
|
|
@@ -10,7 +17,10 @@ const SHAPE = '16 / 9';
|
|
|
10
17
|
const STYLE = `:host{display:block}
|
|
11
18
|
[part=box]{position:relative;overflow:hidden}
|
|
12
19
|
[part=box]>img,[part=box]>video,[part=box]>audio{display:block;width:100%;height:100%;object-fit:contain}
|
|
13
|
-
[part=box]>
|
|
20
|
+
[part=box]>video:not([controls]){cursor:pointer}
|
|
21
|
+
[part=box]>slot{display:flex;align-items:center;justify-content:center;width:100%;height:100%;text-align:center}
|
|
22
|
+
[part=play]{position:absolute;top:50%;left:50%;width:56px;height:56px;margin:-28px 0 0 -28px;border-radius:50%;background:rgb(0 0 0/.6);pointer-events:none}
|
|
23
|
+
[part=play]::before{content:"";position:absolute;top:18px;left:22px;border-style:solid;border-width:10px 0 10px 16px;border-color:transparent transparent transparent #fff}`;
|
|
14
24
|
const shows = new WeakMap();
|
|
15
25
|
export function shownBy(show, client) {
|
|
16
26
|
shows.set(client, show);
|
|
@@ -29,23 +39,62 @@ function refusedForGood(shown) {
|
|
|
29
39
|
return (shown.kind === 'rejected' || shown.kind === 'scoped-refusal') && !shown.retryable;
|
|
30
40
|
}
|
|
31
41
|
function drawnFor(mediaType) {
|
|
32
|
-
if (mediaType
|
|
42
|
+
if (isImageType(mediaType))
|
|
33
43
|
return 'img';
|
|
34
|
-
if (mediaType
|
|
44
|
+
if (isVideoType(mediaType))
|
|
35
45
|
return 'video';
|
|
36
|
-
if (mediaType
|
|
46
|
+
if (isAudioType(mediaType))
|
|
37
47
|
return 'audio';
|
|
38
48
|
return null;
|
|
39
49
|
}
|
|
40
|
-
export function
|
|
41
|
-
|
|
50
|
+
export function rendered(element) {
|
|
51
|
+
return element.closest(RENDERED) !== null;
|
|
52
|
+
}
|
|
53
|
+
export function viewable(element) {
|
|
54
|
+
if (element.localName === 'figure')
|
|
55
|
+
return element.classList.contains(DIAGRAM);
|
|
56
|
+
if (element.localName !== ROOM_MEDIA || element.closest(`.${VIEWING}`) !== null)
|
|
57
|
+
return false;
|
|
58
|
+
return (rendered(element) || (element.shadowRoot?.querySelector('[part=box] > video') ?? null) !== null);
|
|
59
|
+
}
|
|
60
|
+
function viewed(client, opener, alone) {
|
|
61
|
+
void loaded(client.buildFile, VIEWER).then((file) => file?.openViewer({
|
|
62
|
+
opener,
|
|
63
|
+
alone,
|
|
64
|
+
download: (room, path, revision) => void client.binaryFile.download(room, path, revision),
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
function pressed(client) {
|
|
68
|
+
return (event) => {
|
|
69
|
+
if (event.defaultPrevented || event.detail > 1)
|
|
70
|
+
return;
|
|
71
|
+
for (const node of event.composedPath()) {
|
|
72
|
+
if (!(node instanceof Element))
|
|
73
|
+
continue;
|
|
74
|
+
if (viewable(node)) {
|
|
75
|
+
event.preventDefault();
|
|
76
|
+
void client.then((one) => viewed(one, node, !rendered(node)));
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (node.matches(PRESSED_ELSEWHERE))
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export function viewFile(client, media) {
|
|
85
|
+
viewed(client, media, true);
|
|
86
|
+
}
|
|
87
|
+
export function defineRoomMedia(client) {
|
|
88
|
+
if (customElements.get(ROOM_MEDIA) !== undefined)
|
|
42
89
|
return;
|
|
43
90
|
const connected = Promise.resolve(client);
|
|
91
|
+
document.addEventListener('click', pressed(connected));
|
|
44
92
|
class RoomMedia extends HTMLElement {
|
|
45
93
|
static observedAttributes = ATTRIBUTES;
|
|
46
94
|
#root = this.attachShadow({ mode: 'open' });
|
|
47
95
|
#box = document.createElement('div');
|
|
48
96
|
#fallback = document.createElement('slot');
|
|
97
|
+
#play = document.createElement('span');
|
|
49
98
|
#watching = null;
|
|
50
99
|
#near = false;
|
|
51
100
|
#asked = 0;
|
|
@@ -56,6 +105,7 @@ export function defineRoomMedia(client, registry = customElements) {
|
|
|
56
105
|
constructor() {
|
|
57
106
|
super();
|
|
58
107
|
this.#box.setAttribute('part', 'box');
|
|
108
|
+
this.#play.setAttribute('part', 'play');
|
|
59
109
|
this.#root.append(Object.assign(document.createElement('style'), { textContent: STYLE }), this.#box);
|
|
60
110
|
this.#shape();
|
|
61
111
|
}
|
|
@@ -129,11 +179,7 @@ export function defineRoomMedia(client, registry = customElements) {
|
|
|
129
179
|
this.#unshown(asked);
|
|
130
180
|
return;
|
|
131
181
|
}
|
|
132
|
-
const copy = await
|
|
133
|
-
headers: { 'content-type': shown.mediaType },
|
|
134
|
-
})
|
|
135
|
-
.blob()
|
|
136
|
-
.catch(() => null);
|
|
182
|
+
const copy = await blobOf(shown).catch(() => null);
|
|
137
183
|
if (asked !== this.#asked)
|
|
138
184
|
return;
|
|
139
185
|
if (copy === null)
|
|
@@ -157,7 +203,9 @@ export function defineRoomMedia(client, registry = customElements) {
|
|
|
157
203
|
if (content === null)
|
|
158
204
|
this.#box.replaceChildren();
|
|
159
205
|
else if (content.parentNode !== this.#box)
|
|
160
|
-
this.#box.replaceChildren(content
|
|
206
|
+
this.#box.replaceChildren(...(content instanceof HTMLVideoElement && !content.controls
|
|
207
|
+
? [content, this.#play]
|
|
208
|
+
: [content]));
|
|
161
209
|
this.#label();
|
|
162
210
|
}
|
|
163
211
|
#unreadable() {
|
|
@@ -174,13 +222,16 @@ export function defineRoomMedia(client, registry = customElements) {
|
|
|
174
222
|
const kept = this.#drawn?.localName === tag ? this.#drawn : null;
|
|
175
223
|
const drawn = kept ?? document.createElement(tag);
|
|
176
224
|
if (kept === null) {
|
|
225
|
+
const plays = !(drawn instanceof HTMLVideoElement) || this.closest(`.${VIEWING}`) !== null;
|
|
177
226
|
if (drawn instanceof HTMLImageElement)
|
|
178
227
|
drawn.decoding = 'async';
|
|
179
228
|
if (drawn instanceof HTMLMediaElement) {
|
|
180
|
-
drawn.controls = true;
|
|
181
229
|
drawn.preload = 'metadata';
|
|
182
|
-
|
|
183
|
-
|
|
230
|
+
drawn.controls = plays;
|
|
231
|
+
}
|
|
232
|
+
if (drawn instanceof HTMLVideoElement && plays) {
|
|
233
|
+
drawn.autoplay = true;
|
|
234
|
+
drawn.setAttribute('playsinline', '');
|
|
184
235
|
}
|
|
185
236
|
drawn.addEventListener(drawn instanceof HTMLImageElement ? 'load' : 'loadedmetadata', () => {
|
|
186
237
|
if (drawn !== this.#drawn)
|
|
@@ -214,5 +265,5 @@ export function defineRoomMedia(client, registry = customElements) {
|
|
|
214
265
|
void this.#load();
|
|
215
266
|
}
|
|
216
267
|
}
|
|
217
|
-
|
|
268
|
+
customElements.define(ROOM_MEDIA, RoomMedia);
|
|
218
269
|
}
|
package/dist/memory.d.ts
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
|
+
import { type VerifiedModel } from '@agentshouse/mdmodel';
|
|
1
2
|
import type { ModelResult } from './model.js';
|
|
2
|
-
import { type AcceptedMessage, type ActionResult, type Adapter, type BinaryFile, type Capability, type ConversationAction, type ConversationEvent, type DiscoveredRoom, type HeadChange, type ListedAgent, type ListedConversation, type Member, type ProviderLimit, type Retention, type ServiceMode } from './adapter.js';
|
|
3
|
-
export type MemoryRoom = DiscoveredRoom & {
|
|
3
|
+
import { type AcceptedMessage, type ActionResult, type Adapter, type BinaryFile, type Capability, type ConversationAction, type ConversationEvent, type DiscoveredRoom, type SavedFacts, type HeadChange, type ListedAgent, type ListedConversation, type Member, type ProviderLimit, type Retention, type ServiceMode, type TypedPath, type TypedSelection } from './adapter.js';
|
|
4
|
+
export type MemoryRoom = Omit<DiscoveredRoom, 'typedSelection' | 'authoredPaths'> & {
|
|
5
|
+
typedSelection?: TypedSelection | null;
|
|
6
|
+
authoredPaths?: readonly string[];
|
|
4
7
|
model?: ModelResult;
|
|
5
8
|
documents?: Readonly<Record<string, string>>;
|
|
9
|
+
facts?: Readonly<Record<string, SavedFacts>>;
|
|
6
10
|
revisions?: Readonly<Record<string, string>>;
|
|
7
11
|
fileIds?: Readonly<Record<string, string>>;
|
|
12
|
+
created?: Readonly<Record<string, string>>;
|
|
8
13
|
changes?: Readonly<Record<string, HeadChange>>;
|
|
9
14
|
binaryFiles?: Readonly<Record<string, BinaryFile>>;
|
|
10
15
|
folders?: readonly string[];
|
|
@@ -27,13 +32,16 @@ export type MemoryAdapterOptions = {
|
|
|
27
32
|
retention?: Retention;
|
|
28
33
|
member?: Member;
|
|
29
34
|
unopened?: boolean;
|
|
30
|
-
roomTypes?:
|
|
35
|
+
roomTypes?: VerifiedModel;
|
|
36
|
+
typedPaths?: readonly TypedPath[];
|
|
37
|
+
privateRoom?: string;
|
|
31
38
|
};
|
|
32
39
|
export type MemoryAdapter = Adapter & {
|
|
33
40
|
discover: NonNullable<Adapter['discover']>;
|
|
34
41
|
refresh: NonNullable<Adapter['refresh']>;
|
|
35
42
|
setRooms(rooms: readonly MemoryRoom[]): void;
|
|
36
43
|
setConversations(conversations: readonly MemoryConversation[]): void;
|
|
44
|
+
setAgents(agents: readonly ListedAgent[]): void;
|
|
37
45
|
script(operation: keyof Adapter, answer: unknown): void;
|
|
38
46
|
open(): void;
|
|
39
47
|
close(closing?: {
|
package/dist/memory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EACL,KAAK,eAAe,EAEpB,KAAK,YAAY,EACjB,KAAK,OAAO,EAIZ,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
|