@agentshouse/mdruntime 0.1.0-cbb8d8acc9d19 → 0.1.0-cbbae1fff01c6
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 +24 -11
- package/dist/acceptance.d.ts +3 -0
- package/dist/acceptance.d.ts.map +1 -0
- package/dist/acceptance.js +308 -0
- package/dist/actions.d.ts +20 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +251 -0
- package/dist/adapter.d.ts +194 -90
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts +7 -10
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +40 -41
- package/dist/attempt.d.ts +16 -0
- package/dist/attempt.d.ts.map +1 -0
- package/dist/attempt.js +70 -0
- package/dist/binary.d.ts +18 -0
- package/dist/binary.d.ts.map +1 -0
- package/dist/binary.js +8 -0
- package/dist/bootstrap.d.ts +37 -5
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +324 -52
- 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 -14
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +17 -56
- package/dist/change.d.ts +46 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +36 -0
- package/dist/chat-types.d.ts +5 -0
- package/dist/chat-types.d.ts.map +1 -0
- package/dist/chat-types.js +13 -0
- package/dist/client.d.ts +56 -18
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +164 -23
- package/dist/collection.d.ts +31 -14
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +61 -55
- package/dist/compile.d.ts +16 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +711 -0
- package/dist/connection.d.ts +8 -104
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +107 -2094
- package/dist/context.d.ts +2 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +7 -0
- package/dist/conversation-live.d.ts +135 -0
- package/dist/conversation-live.d.ts.map +1 -0
- package/dist/conversation-live.js +247 -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 +67 -44
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +1010 -549
- 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 +148 -0
- package/dist/durability.d.ts +19 -1
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +5 -0
- package/dist/entry.d.ts +20 -0
- package/dist/entry.d.ts.map +1 -0
- package/dist/entry.js +161 -0
- package/dist/expectation.d.ts +23 -0
- package/dist/expectation.d.ts.map +1 -0
- package/dist/expectation.js +92 -0
- package/dist/failure.d.ts +14 -0
- package/dist/failure.d.ts.map +1 -0
- package/dist/failure.js +22 -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 +28 -4
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +149 -27
- package/dist/identity.d.ts +3 -0
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +13 -1
- package/dist/index.d.ts +40 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -0
- package/dist/install.d.ts +54 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +538 -0
- package/dist/job.d.ts +5 -0
- package/dist/job.d.ts.map +1 -0
- package/dist/job.js +7 -0
- package/dist/lifecycle.d.ts +7 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +272 -0
- package/dist/listing.d.ts +48 -0
- package/dist/listing.d.ts.map +1 -0
- package/dist/listing.js +139 -0
- package/dist/live.d.ts +23 -0
- package/dist/live.d.ts.map +1 -0
- package/dist/live.js +165 -0
- package/dist/locks.d.ts +7 -0
- package/dist/locks.d.ts.map +1 -0
- package/dist/locks.js +33 -0
- package/dist/log.d.ts +1 -0
- package/dist/log.d.ts.map +1 -1
- package/dist/lost.d.ts +5 -0
- package/dist/lost.d.ts.map +1 -0
- package/dist/lost.js +50 -0
- package/dist/media.d.ts +8 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/media.js +218 -0
- package/dist/memory.d.ts +25 -8
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +295 -99
- package/dist/messages.d.ts +49 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +148 -0
- package/dist/model.d.ts +13 -13
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +7 -15
- package/dist/models.d.ts +10 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +156 -0
- package/dist/name.d.ts +4 -0
- package/dist/name.d.ts.map +1 -0
- package/dist/name.js +122 -0
- package/dist/observation.d.ts +22 -4
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +127 -26
- package/dist/open.d.ts +2 -0
- package/dist/open.d.ts.map +1 -0
- package/dist/open.js +1 -0
- package/dist/opened.d.ts +22 -0
- package/dist/opened.d.ts.map +1 -0
- package/dist/opened.js +107 -0
- package/dist/opening.d.ts +4 -0
- package/dist/opening.d.ts.map +1 -0
- package/dist/opening.js +59 -0
- package/dist/outcome.d.ts +75 -5
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +84 -1
- package/dist/overlay.d.ts +17 -5
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +168 -190
- package/dist/parts.d.ts +11 -0
- package/dist/parts.d.ts.map +1 -0
- package/dist/parts.js +21 -0
- package/dist/paths.d.ts +2 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +26 -0
- package/dist/preparation.d.ts +20 -0
- package/dist/preparation.d.ts.map +1 -0
- package/dist/preparation.js +233 -0
- package/dist/presence.d.ts +52 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +220 -0
- package/dist/queries.d.ts +16 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +270 -0
- package/dist/query.d.ts +51 -181
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -461
- package/dist/questions.d.ts +34 -0
- package/dist/questions.d.ts.map +1 -0
- package/dist/questions.js +122 -0
- package/dist/queue.d.ts +40 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +455 -0
- package/dist/reach.d.ts +21 -5
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +305 -80
- package/dist/react.d.ts +43 -20
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +22 -21
- 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 +49 -0
- package/dist/readiness.d.ts.map +1 -0
- package/dist/readiness.js +27 -0
- package/dist/reads.d.ts +37 -0
- package/dist/reads.d.ts.map +1 -0
- package/dist/reads.js +174 -0
- package/dist/recovery.d.ts +26 -0
- package/dist/recovery.d.ts.map +1 -0
- package/dist/recovery.js +232 -0
- package/dist/refresh.d.ts +20 -7
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +155 -59
- package/dist/refusal.d.ts +5 -0
- package/dist/refusal.d.ts.map +1 -0
- package/dist/refusal.js +57 -0
- package/dist/replica.d.ts +53 -33
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +361 -164
- package/dist/room-draft.d.ts +58 -12
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +270 -90
- 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 +32 -35
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +64 -124
- 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 +46 -22
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +969 -171
- package/dist/saves.d.ts +32 -0
- package/dist/saves.d.ts.map +1 -0
- package/dist/saves.js +413 -0
- package/dist/search.d.ts +15 -54
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +10 -121
- 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 +10 -0
- package/dist/shared.d.ts.map +1 -0
- package/dist/shared.js +339 -0
- package/dist/shown.d.ts +32 -0
- package/dist/shown.d.ts.map +1 -0
- package/dist/shown.js +290 -0
- package/dist/socket/admission.d.ts +7 -0
- package/dist/socket/admission.d.ts.map +1 -0
- package/dist/socket/admission.js +39 -0
- package/dist/socket/answers.d.ts +6 -0
- package/dist/socket/answers.d.ts.map +1 -0
- package/dist/socket/answers.js +20 -0
- package/dist/socket/lanes.d.ts +20 -0
- package/dist/socket/lanes.d.ts.map +1 -0
- package/dist/socket/lanes.js +77 -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 +170 -0
- package/dist/source.d.ts +61 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +82 -0
- package/dist/status.d.ts +7 -4
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +3 -15
- 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 +210 -0
- package/dist/store/records.d.ts.map +1 -0
- package/dist/store/records.js +428 -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 +109 -94
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +161 -384
- package/dist/stored.d.ts +156 -0
- package/dist/stored.d.ts.map +1 -0
- package/dist/stored.js +649 -0
- package/dist/surface.d.ts +88 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +223 -0
- package/dist/sync.d.ts +19 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +521 -0
- package/dist/tables.d.ts +412 -0
- package/dist/tables.d.ts.map +1 -0
- package/dist/tables.js +737 -0
- package/dist/tallies.d.ts +18 -0
- package/dist/tallies.d.ts.map +1 -0
- package/dist/tallies.js +129 -0
- package/dist/transfer.d.ts +0 -5
- package/dist/transfer.d.ts.map +1 -1
- package/dist/turn.d.ts +9 -0
- package/dist/turn.d.ts.map +1 -0
- package/dist/turn.js +75 -0
- 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 +189 -37
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +77 -33
- package/package.json +27 -15
- package/AGENTS.md +0 -244
- package/dist/attachment.d.ts +0 -3
- package/dist/attachment.d.ts.map +0 -1
- package/dist/attachment.js +0 -8
- package/dist/read-side.d.ts +0 -18
- package/dist/read-side.d.ts.map +0 -1
- package/dist/read-side.js +0 -433
package/dist/reach.js
CHANGED
|
@@ -1,30 +1,39 @@
|
|
|
1
|
+
import { selected } from './collection.js';
|
|
1
2
|
import { unheldView } from './conversation.js';
|
|
2
3
|
import { modelTypes, NO_MODEL } from './model.js';
|
|
3
|
-
import {
|
|
4
|
+
import { changeOf, digestApplied, digestOf, observing, } from './observation.js';
|
|
5
|
+
import { runtimeError, uncaught } from './failure.js';
|
|
6
|
+
import { failure, lockedRoom, ROOM_LOCKED, undeclared, UNREADABLE, } from './outcome.js';
|
|
4
7
|
import { beneath } from './paths.js';
|
|
5
|
-
import {
|
|
6
|
-
import { moveTarget, readParts } from './room-draft.js';
|
|
8
|
+
import { moveTarget, readParts, staleWrite, } from './room-draft.js';
|
|
7
9
|
import { documentKey } from './rows.js';
|
|
8
10
|
const UNHELD_TYPES = { collection: modelTypes(NO_MODEL), typedSelection: null };
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return Promise.resolve(UNDECLARED);
|
|
11
|
+
function unconversed(name) {
|
|
12
|
+
return () => Promise.resolve(undeclared(name));
|
|
12
13
|
}
|
|
13
14
|
const NO_CONVERSATION = {
|
|
14
15
|
list: () => Promise.resolve([]),
|
|
15
16
|
read: (conversation) => Promise.resolve(unheldView(conversation)),
|
|
16
|
-
create:
|
|
17
|
-
send:
|
|
18
|
-
answer:
|
|
19
|
-
interrupt:
|
|
20
|
-
kill:
|
|
21
|
-
|
|
22
|
-
delete: undeclared,
|
|
17
|
+
create: unconversed('conversations/create'),
|
|
18
|
+
send: unconversed('conversations/send'),
|
|
19
|
+
answer: unconversed('conversations/interaction/answer'),
|
|
20
|
+
interrupt: unconversed('conversations/interrupt'),
|
|
21
|
+
kill: unconversed('conversations/kill'),
|
|
22
|
+
delete: unconversed('conversations/delete'),
|
|
23
23
|
};
|
|
24
24
|
const NO_CHAT_DRAFT = {
|
|
25
25
|
write: () => Promise.resolve(),
|
|
26
|
+
prepend: () => Promise.resolve(),
|
|
26
27
|
discard: () => Promise.resolve(),
|
|
27
28
|
};
|
|
29
|
+
function areasOf(reach) {
|
|
30
|
+
return reach.areas ?? [];
|
|
31
|
+
}
|
|
32
|
+
function fenced(reach, room, path) {
|
|
33
|
+
return areasOf(reach).some((area) => area.room === room &&
|
|
34
|
+
beneath(area.path, path) &&
|
|
35
|
+
!area.open.some((open) => beneath(open, path)));
|
|
36
|
+
}
|
|
28
37
|
export function holds(reach, room) {
|
|
29
38
|
return (reach === null ||
|
|
30
39
|
reach.rooms.includes(room) ||
|
|
@@ -37,16 +46,17 @@ export function governs(reach, room) {
|
|
|
37
46
|
if (wholly(reach, room.locator)) {
|
|
38
47
|
return { collection: true, selection: room.typedSelection !== null };
|
|
39
48
|
}
|
|
40
|
-
const
|
|
49
|
+
const within = (path) => selected({ selection: room.typedSelection }, path);
|
|
41
50
|
const paths = reach.documents
|
|
42
51
|
.filter((document) => document.room === room.locator)
|
|
43
52
|
.map(({ path }) => path);
|
|
44
|
-
return { collection: paths.some((path) => !
|
|
53
|
+
return { collection: paths.some((path) => !within(path)), selection: paths.some(within) };
|
|
45
54
|
}
|
|
46
55
|
function covers(reach, room, path) {
|
|
47
56
|
return (reach === null ||
|
|
48
|
-
reach
|
|
49
|
-
|
|
57
|
+
(!fenced(reach, room, path) &&
|
|
58
|
+
(reach.rooms.includes(room) ||
|
|
59
|
+
reach.documents.some((document) => document.room === room && document.path === path))));
|
|
50
60
|
}
|
|
51
61
|
function conversing(reach) {
|
|
52
62
|
return reach === null || reach.conversations;
|
|
@@ -59,6 +69,9 @@ export function planReach(reach) {
|
|
|
59
69
|
documents: [
|
|
60
70
|
...new Set(reach.documents.map(({ room, path }) => documentKey(room, path))),
|
|
61
71
|
].sort(),
|
|
72
|
+
areas: areasOf(reach)
|
|
73
|
+
.map(({ room, path, open }) => ({ room, path, open: [...new Set(open)].sort() }))
|
|
74
|
+
.sort((left, right) => documentKey(left.room, left.path) < documentKey(right.room, right.path) ? -1 : 1),
|
|
62
75
|
};
|
|
63
76
|
}
|
|
64
77
|
function roomsWithin(reach, rooms) {
|
|
@@ -74,7 +87,7 @@ function typesWithin(reach, room, types) {
|
|
|
74
87
|
};
|
|
75
88
|
}
|
|
76
89
|
function moves(reach, room, move) {
|
|
77
|
-
return move === undefined || covers(reach, room, moveTarget(move));
|
|
90
|
+
return move === undefined || covers(reach, move.room ?? room, moveTarget(move));
|
|
78
91
|
}
|
|
79
92
|
function draftWithin(reach, draft) {
|
|
80
93
|
return covers(reach, draft.room, draft.path) && moves(reach, draft.room, draft.parts.move);
|
|
@@ -88,7 +101,7 @@ function shownDraft(reach, draft) {
|
|
|
88
101
|
function writeWithin(reach, write) {
|
|
89
102
|
return write.outcome === 'written'
|
|
90
103
|
? { outcome: 'written', roomDraft: shownDraft(reach, write.roomDraft) }
|
|
91
|
-
:
|
|
104
|
+
: staleWrite(shownDraft(reach, write.current));
|
|
92
105
|
}
|
|
93
106
|
function savedWithin(reach, room, result) {
|
|
94
107
|
if (reach === null || result.outcome === 'saved')
|
|
@@ -108,136 +121,348 @@ function statusWithin(reach, status) {
|
|
|
108
121
|
return {
|
|
109
122
|
...status,
|
|
110
123
|
attentionRequired: status.attentionRequired.filter((entry) => covers(reach, entry.room, entry.path)),
|
|
124
|
+
unsent: status.unsent.filter((change) => covers(reach, change.room, change.path)),
|
|
111
125
|
};
|
|
112
126
|
}
|
|
113
127
|
function queueWithin(reach, room, entries) {
|
|
114
|
-
return entries
|
|
115
|
-
(
|
|
128
|
+
return entries
|
|
129
|
+
.filter(({ batch }) => batch.changes.every((change) => covers(reach, room, change.path) &&
|
|
130
|
+
(change.kind !== 'move' || covers(reach, room, change.to))))
|
|
131
|
+
.map((entry) => {
|
|
132
|
+
const { between, ...batch } = entry.batch;
|
|
133
|
+
if (between === undefined)
|
|
134
|
+
return entry;
|
|
135
|
+
return wholly(reach, between.source.room) && wholly(reach, between.destination.room)
|
|
136
|
+
? entry
|
|
137
|
+
: { ...entry, batch };
|
|
138
|
+
});
|
|
116
139
|
}
|
|
117
140
|
function unreached(room) {
|
|
118
|
-
return
|
|
141
|
+
return runtimeError('unknown-room', `Unknown Room ${room}`);
|
|
142
|
+
}
|
|
143
|
+
function lockedError(room) {
|
|
144
|
+
return runtimeError(ROOM_LOCKED, `${room} is locked until House confirms its access`, true);
|
|
145
|
+
}
|
|
146
|
+
function deviceUnreached() {
|
|
147
|
+
return runtimeError('device-unreached', 'Only the panel reaches this device');
|
|
119
148
|
}
|
|
120
|
-
|
|
149
|
+
const ATTACH_REQUIRED = 'attach-required';
|
|
150
|
+
function attachRequired() {
|
|
151
|
+
return runtimeError(ATTACH_REQUIRED, 'App code takes a file in with binaryFile.attach');
|
|
152
|
+
}
|
|
153
|
+
function carriesFile(parts) {
|
|
154
|
+
return parts !== null && typeof parts === 'object' && Object.hasOwn(parts, 'file');
|
|
155
|
+
}
|
|
156
|
+
export function narrowed(runtime, given, port) {
|
|
121
157
|
const { md, watch } = runtime;
|
|
122
158
|
let reach = given;
|
|
123
159
|
const open = new Set();
|
|
124
|
-
function following(begin) {
|
|
160
|
+
function following(begin, locking = false) {
|
|
125
161
|
let stop = begin();
|
|
126
162
|
const restart = () => {
|
|
127
163
|
stop();
|
|
128
164
|
stop = begin();
|
|
129
165
|
};
|
|
130
166
|
open.add(restart);
|
|
167
|
+
const unwatch = locking ? runtime.watchLocks(restart) : () => { };
|
|
131
168
|
return () => {
|
|
132
169
|
open.delete(restart);
|
|
170
|
+
unwatch();
|
|
171
|
+
stop();
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
const unlocking = (rooms, locked) => {
|
|
175
|
+
const held = (rooms ?? []).filter((room) => locked.includes(room));
|
|
176
|
+
return held.length === 0 ? null : { pending: held.map((room) => ({ room, awaits: 'unlock' })) };
|
|
177
|
+
};
|
|
178
|
+
const unlocked = (entries, locked) => entries.filter((entry) => !locked.includes(entry.room));
|
|
179
|
+
const intoLocked = async (held) => {
|
|
180
|
+
for (const move of held) {
|
|
181
|
+
if (move?.room !== undefined && (await runtime.locked(move.room)))
|
|
182
|
+
return true;
|
|
183
|
+
}
|
|
184
|
+
return false;
|
|
185
|
+
};
|
|
186
|
+
function ordered(deliver) {
|
|
187
|
+
let open = true;
|
|
188
|
+
let shown = Promise.resolve();
|
|
189
|
+
return {
|
|
190
|
+
push(making) {
|
|
191
|
+
shown = shown.then(() => making.then((value) => {
|
|
192
|
+
if (open)
|
|
193
|
+
deliver(value);
|
|
194
|
+
}, uncaught), uncaught);
|
|
195
|
+
},
|
|
196
|
+
stop() {
|
|
197
|
+
open = false;
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
function unlockedWatch(topic, input, deliver, fail, within) {
|
|
202
|
+
const shown = ordered(deliver);
|
|
203
|
+
const stop = watch(topic, input, (message) => {
|
|
204
|
+
shown.push(runtime.lockedRooms().then((locked) => within(message, locked)));
|
|
205
|
+
}, fail);
|
|
206
|
+
return () => {
|
|
207
|
+
shown.stop();
|
|
208
|
+
stop();
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
function lockedFirst(room, start, shut) {
|
|
212
|
+
let open = true;
|
|
213
|
+
let stop = () => { };
|
|
214
|
+
void (async () => {
|
|
215
|
+
const closed = !holds(reach, room) || (await runtime.locked(room));
|
|
216
|
+
if (!open)
|
|
217
|
+
return;
|
|
218
|
+
if (closed)
|
|
219
|
+
shut();
|
|
220
|
+
else
|
|
221
|
+
stop = start();
|
|
222
|
+
})();
|
|
223
|
+
return () => {
|
|
224
|
+
open = false;
|
|
133
225
|
stop();
|
|
134
226
|
};
|
|
135
227
|
}
|
|
136
|
-
const within = (topic, input, deliver) => {
|
|
228
|
+
const within = (topic, input, deliver, fail) => {
|
|
229
|
+
if (topic === 'read' && reach !== null) {
|
|
230
|
+
fail(deviceUnreached());
|
|
231
|
+
return () => { };
|
|
232
|
+
}
|
|
137
233
|
if (topic === 'rooms') {
|
|
138
|
-
return following(() => watch(topic, input, (rooms) => deliver(roomsWithin(reach, rooms))));
|
|
234
|
+
return following(() => watch(topic, input, (rooms) => deliver(roomsWithin(reach, rooms)), fail));
|
|
235
|
+
}
|
|
236
|
+
if (topic === 'readiness') {
|
|
237
|
+
return following(() => runtime.watchReadiness(port, reach, deliver));
|
|
139
238
|
}
|
|
140
239
|
if (topic === 'sync-status') {
|
|
141
|
-
return following(() =>
|
|
240
|
+
return following(() => unlockedWatch(topic, input, deliver, fail, (status, locked) => {
|
|
241
|
+
const shown = statusWithin(reach, status);
|
|
242
|
+
return { ...shown, attentionRequired: unlocked(shown.attentionRequired, locked) };
|
|
243
|
+
}), true);
|
|
142
244
|
}
|
|
143
245
|
if (topic === 'room-drafts') {
|
|
144
|
-
return following(() =>
|
|
246
|
+
return following(() => unlockedWatch(topic, input, deliver, fail, (drafts, locked) => unlocked(draftsWithin(reach, drafts), locked)), true);
|
|
145
247
|
}
|
|
146
248
|
if (topic === 'queue') {
|
|
147
249
|
const room = input[0];
|
|
148
|
-
return following(() =>
|
|
149
|
-
if (!holds(reach, room)) {
|
|
150
|
-
deliver([]);
|
|
151
|
-
return () => { };
|
|
152
|
-
}
|
|
153
|
-
return watch(topic, input, (entries) => deliver(queueWithin(reach, room, entries)));
|
|
154
|
-
});
|
|
250
|
+
return following(() => lockedFirst(room, () => watch(topic, input, (entries) => deliver(queueWithin(reach, room, entries)), fail), () => deliver([])), true);
|
|
155
251
|
}
|
|
156
252
|
if (topic === 'query') {
|
|
157
|
-
const
|
|
253
|
+
const planning = runtime.plan(input[0], reach);
|
|
158
254
|
let held = null;
|
|
159
255
|
return following(() => {
|
|
160
|
-
let
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
256
|
+
let open = true;
|
|
257
|
+
let stop = () => { };
|
|
258
|
+
void (async () => {
|
|
259
|
+
const plan = await planning;
|
|
260
|
+
const locked = await runtime.lockedRooms();
|
|
261
|
+
if (!open)
|
|
165
262
|
return;
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
held
|
|
170
|
-
|
|
263
|
+
const pending = unlocking(plan.rooms, locked);
|
|
264
|
+
if (pending !== null) {
|
|
265
|
+
const answer = { result: pending, keys: [] };
|
|
266
|
+
if (held === null || changeOf(held, answer) !== null)
|
|
267
|
+
deliver(answer);
|
|
268
|
+
held = digestOf(answer);
|
|
171
269
|
return;
|
|
172
270
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
271
|
+
let first = true;
|
|
272
|
+
const heard = (message) => {
|
|
273
|
+
if (!first) {
|
|
274
|
+
held = digestApplied(held, message);
|
|
275
|
+
deliver(message);
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
first = false;
|
|
279
|
+
const change = held === null ? message : changeOf(held, message);
|
|
280
|
+
held = digestOf(message);
|
|
281
|
+
if (change !== null)
|
|
282
|
+
deliver(change);
|
|
283
|
+
};
|
|
284
|
+
const current = { ...plan, reach: planReach(reach), locked };
|
|
285
|
+
stop = runtime.watchPlan(current, (message) => {
|
|
286
|
+
if (open)
|
|
287
|
+
heard(message);
|
|
288
|
+
}, (error) => {
|
|
289
|
+
if (open)
|
|
290
|
+
fail(error);
|
|
291
|
+
});
|
|
292
|
+
})().catch((error) => {
|
|
293
|
+
if (open)
|
|
294
|
+
fail(error);
|
|
178
295
|
});
|
|
179
|
-
|
|
296
|
+
return () => {
|
|
297
|
+
open = false;
|
|
298
|
+
stop();
|
|
299
|
+
};
|
|
300
|
+
}, true);
|
|
180
301
|
}
|
|
181
302
|
if (topic === 'conversation') {
|
|
182
303
|
return following(() => {
|
|
183
304
|
if (conversing(reach))
|
|
184
|
-
return watch(topic, input, deliver);
|
|
305
|
+
return watch(topic, input, deliver, fail);
|
|
185
306
|
deliver(unheldView(input[0]));
|
|
186
307
|
return () => { };
|
|
187
308
|
});
|
|
188
309
|
}
|
|
189
|
-
if (topic === 'conversations') {
|
|
310
|
+
if (topic === 'conversations' || topic === 'agents') {
|
|
190
311
|
return following(() => {
|
|
191
312
|
if (conversing(reach))
|
|
192
|
-
return watch(topic, input, deliver);
|
|
313
|
+
return watch(topic, input, deliver, fail);
|
|
193
314
|
deliver([]);
|
|
194
315
|
return () => { };
|
|
195
316
|
});
|
|
196
317
|
}
|
|
197
|
-
|
|
318
|
+
if (topic === 'figures' || topic === 'holdings') {
|
|
319
|
+
if (reach === null)
|
|
320
|
+
return watch(topic, input, deliver, fail);
|
|
321
|
+
fail(deviceUnreached());
|
|
322
|
+
return () => { };
|
|
323
|
+
}
|
|
324
|
+
return watch(topic, input, deliver, fail);
|
|
198
325
|
};
|
|
326
|
+
const files = new Map();
|
|
327
|
+
let handed = 0;
|
|
328
|
+
async function hand(reading) {
|
|
329
|
+
const answer = await reading;
|
|
330
|
+
if (answer.kind !== 'binary')
|
|
331
|
+
return answer;
|
|
332
|
+
handed += 1;
|
|
333
|
+
const file = String(handed);
|
|
334
|
+
files.set(file, answer.file);
|
|
335
|
+
return { ...answer, file };
|
|
336
|
+
}
|
|
199
337
|
const conversation = () => (conversing(reach) ? md.conversation : NO_CONVERSATION);
|
|
200
338
|
const chatDraft = () => (conversing(reach) ? md.chatDraft : NO_CHAT_DRAFT);
|
|
201
339
|
const view = {
|
|
202
340
|
...md,
|
|
203
|
-
rooms: () => roomsWithin(reach,
|
|
204
|
-
query: ((input) =>
|
|
341
|
+
rooms: () => md.rooms().then((rooms) => roomsWithin(reach, rooms)),
|
|
342
|
+
query: (async (input) => {
|
|
343
|
+
const plan = await runtime.plan(input, reach);
|
|
344
|
+
const locked = await runtime.lockedRooms();
|
|
345
|
+
return unlocking(plan.rooms, locked) ?? runtime.query({ ...plan, locked });
|
|
346
|
+
}),
|
|
205
347
|
search: (input) => runtime.search(input, reach),
|
|
206
|
-
types(room) {
|
|
348
|
+
async types(room) {
|
|
349
|
+
if (holds(reach, room) && (await runtime.locked(room)))
|
|
350
|
+
throw lockedError(room);
|
|
207
351
|
if (wholly(reach, room))
|
|
208
352
|
return md.types(room);
|
|
209
353
|
if (!holds(reach, room))
|
|
210
354
|
return structuredClone(UNHELD_TYPES);
|
|
211
|
-
|
|
212
|
-
return typesWithin(reach, listed, md.types(room));
|
|
355
|
+
return typesWithin(reach, await runtime.room(room), await md.types(room));
|
|
213
356
|
},
|
|
214
357
|
async save(room, roomDrafts, writtenBy) {
|
|
215
358
|
if (!holds(reach, room))
|
|
216
359
|
throw unreached(room);
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
360
|
+
if (await runtime.locked(room)) {
|
|
361
|
+
return { outcome: 'refused', code: ROOM_LOCKED, retryable: true };
|
|
362
|
+
}
|
|
363
|
+
const held = (await Promise.all(roomDrafts.map(({ path }) => md.roomDraft.read(room, path)))).map((draft) => draft?.parts.move);
|
|
364
|
+
const outside = roomDrafts.find(({ path }, at) => !covers(reach, room, path) || !moves(reach, room, held[at]));
|
|
365
|
+
if (outside !== undefined) {
|
|
366
|
+
return { outcome: 'refused', code: 'stale', retryable: false, file: outside.path };
|
|
367
|
+
}
|
|
368
|
+
if (await intoLocked(held))
|
|
369
|
+
return { outcome: 'refused', code: ROOM_LOCKED, retryable: true };
|
|
221
370
|
return savedWithin(reach, room, await md.save(room, roomDrafts, writtenBy));
|
|
222
371
|
},
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
372
|
+
async saveParts(room, parts, writtenBy) {
|
|
373
|
+
if (!holds(reach, room))
|
|
374
|
+
throw unreached(room);
|
|
375
|
+
const filed = reach === null ? undefined : parts.find(({ parts: one }) => carriesFile(one));
|
|
376
|
+
if (filed !== undefined) {
|
|
377
|
+
return { outcome: 'refused', code: ATTACH_REQUIRED, retryable: false, file: filed.path };
|
|
378
|
+
}
|
|
379
|
+
if (await runtime.locked(room)) {
|
|
380
|
+
return { outcome: 'refused', code: ROOM_LOCKED, retryable: true };
|
|
381
|
+
}
|
|
382
|
+
const held = parts.map(({ path, parts: one }) => readParts(one, path).move);
|
|
383
|
+
if (parts.some(({ path }, at) => !covers(reach, room, path) || !moves(reach, room, held[at]))) {
|
|
384
|
+
throw unreached(room);
|
|
385
|
+
}
|
|
386
|
+
if (await intoLocked(held))
|
|
387
|
+
return { outcome: 'refused', code: ROOM_LOCKED, retryable: true };
|
|
388
|
+
return savedWithin(reach, room, await md.saveParts(room, parts, writtenBy));
|
|
389
|
+
},
|
|
390
|
+
async resolve(room, path, destination) {
|
|
391
|
+
const at = await runtime.located(room, path, destination);
|
|
392
|
+
return at !== null && !covers(reach, at.room, at.path)
|
|
393
|
+
? UNREADABLE
|
|
394
|
+
: md.resolve(room, path, destination);
|
|
395
|
+
},
|
|
396
|
+
history: async (room, path, query) => !covers(reach, room, path)
|
|
397
|
+
? failure({ kind: 'room-not-readable', locator: room })
|
|
398
|
+
: (await runtime.locked(room))
|
|
399
|
+
? lockedRoom(room)
|
|
400
|
+
: md.history(room, path, query),
|
|
401
|
+
binaryFile: {
|
|
402
|
+
read: async (room, path, revision) => !covers(reach, room, path)
|
|
403
|
+
? failure({ kind: 'room-not-readable', locator: room })
|
|
404
|
+
: (await runtime.locked(room))
|
|
405
|
+
? lockedRoom(room)
|
|
406
|
+
: hand(md.binaryFile.read(room, path, revision)),
|
|
407
|
+
link: async (room, path, revision) => !covers(reach, room, path)
|
|
408
|
+
? failure({ kind: 'room-not-readable', locator: room })
|
|
409
|
+
: (await runtime.locked(room))
|
|
410
|
+
? lockedRoom(room)
|
|
411
|
+
: md.binaryFile.link(room, path, revision),
|
|
412
|
+
show: async (room, path, revision) => !covers(reach, room, path)
|
|
413
|
+
? failure({ kind: 'room-not-readable', locator: room })
|
|
414
|
+
: (await runtime.locked(room))
|
|
415
|
+
? lockedRoom(room)
|
|
416
|
+
: hand(md.binaryFile.show(room, path, revision)),
|
|
417
|
+
attach: async (room, file) => !wholly(reach, room)
|
|
418
|
+
? failure({ kind: 'room-not-readable', locator: room })
|
|
419
|
+
: (await runtime.locked(room))
|
|
420
|
+
? lockedRoom(room)
|
|
421
|
+
: md.binaryFile.attach(room, file),
|
|
422
|
+
async part(file, part) {
|
|
423
|
+
const key = files.get(file);
|
|
424
|
+
if (key === undefined)
|
|
425
|
+
return null;
|
|
426
|
+
const bytes = await md.binaryFile.part(key, part);
|
|
427
|
+
if (bytes === null)
|
|
428
|
+
files.delete(file);
|
|
429
|
+
return bytes;
|
|
430
|
+
},
|
|
431
|
+
},
|
|
432
|
+
reached: async (room, roomVersion, path) => (path === undefined ? wholly(reach, room) : covers(reach, room, path)) &&
|
|
433
|
+
!(await runtime.locked(room)) &&
|
|
434
|
+
(await md.reached(room, roomVersion, path)),
|
|
228
435
|
log: () => (reach === null ? md.log() : ''),
|
|
436
|
+
cleanUp: () => (reach === null ? md.cleanUp() : Promise.reject(deviceUnreached())),
|
|
437
|
+
unsent: () => (reach === null ? md.unsent() : Promise.reject(deviceUnreached())),
|
|
438
|
+
reset: () => (reach === null ? md.reset() : Promise.reject(deviceUnreached())),
|
|
439
|
+
readAgain: () => (reach === null ? md.readAgain() : Promise.reject(deviceUnreached())),
|
|
229
440
|
roomDraft: {
|
|
230
|
-
list: () => md.roomDraft.list()
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
441
|
+
list: async () => unlocked(draftsWithin(reach, await md.roomDraft.list()), await runtime.lockedRooms()),
|
|
442
|
+
async read(room, path) {
|
|
443
|
+
if (!covers(reach, room, path))
|
|
444
|
+
return null;
|
|
445
|
+
if (await runtime.locked(room))
|
|
446
|
+
throw lockedError(room);
|
|
447
|
+
return shownDraft(reach, await md.roomDraft.read(room, path));
|
|
448
|
+
},
|
|
449
|
+
async write(room, path, revision, parts, next) {
|
|
450
|
+
if (reach !== null && carriesFile(parts))
|
|
451
|
+
throw attachRequired();
|
|
452
|
+
const move = readParts(parts, path).move;
|
|
453
|
+
if (!covers(reach, room, path) || !moves(reach, room, move))
|
|
234
454
|
throw unreached(room);
|
|
235
|
-
|
|
236
|
-
|
|
455
|
+
if (await runtime.locked(room))
|
|
456
|
+
throw lockedError(room);
|
|
457
|
+
if (await intoLocked([move]))
|
|
458
|
+
throw lockedError(move.room);
|
|
459
|
+
return writeWithin(reach, await md.roomDraft.write(room, path, revision, parts, next));
|
|
237
460
|
},
|
|
238
461
|
async discard(room, path, revision) {
|
|
239
462
|
if (!covers(reach, room, path))
|
|
240
|
-
return
|
|
463
|
+
return staleWrite(null);
|
|
464
|
+
if (await runtime.locked(room))
|
|
465
|
+
throw lockedError(room);
|
|
241
466
|
return writeWithin(reach, await md.roomDraft.discard(room, path, revision));
|
|
242
467
|
},
|
|
243
468
|
},
|
|
@@ -245,15 +470,15 @@ export function narrowed(runtime, given) {
|
|
|
245
470
|
list: () => conversation().list(),
|
|
246
471
|
read: (id, options) => conversation().read(id, options),
|
|
247
472
|
create: (input) => conversation().create(input),
|
|
248
|
-
send: (id) => conversation().send(id),
|
|
473
|
+
send: (id, operation, draft) => conversation().send(id, operation, draft),
|
|
249
474
|
answer: (id, answer) => conversation().answer(id, answer),
|
|
250
475
|
interrupt: (id) => conversation().interrupt(id),
|
|
251
476
|
kill: (id) => conversation().kill(id),
|
|
252
|
-
cancel: (id, turn) => conversation().cancel(id, turn),
|
|
253
477
|
delete: (id) => conversation().delete(id),
|
|
254
478
|
},
|
|
255
479
|
chatDraft: {
|
|
256
|
-
write: (id, draft) => chatDraft().write(id, draft),
|
|
480
|
+
write: (id, draft, revision) => chatDraft().write(id, draft, revision),
|
|
481
|
+
prepend: (id, draft) => chatDraft().prepend(id, draft),
|
|
257
482
|
discard: (id) => chatDraft().discard(id),
|
|
258
483
|
},
|
|
259
484
|
observe: observing(within),
|
package/dist/react.d.ts
CHANGED
|
@@ -1,32 +1,55 @@
|
|
|
1
|
+
import type { DocumentQuery, GroupQuery } from '@agentshouse/mdmodel';
|
|
1
2
|
import type { MdRuntimeClient } from './client.js';
|
|
2
|
-
import type { AppRoom
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
3
|
+
import type { AppRoom } from './listing.js';
|
|
4
|
+
import type { ConnectionRefusal } from './socket.js';
|
|
5
|
+
import type { SavedRoomDraft, SaveResult } from './saves.js';
|
|
6
|
+
import type { Member, ServiceMode } from './adapter.js';
|
|
7
|
+
import type { ConversationAgent, ConversationEntry, ConversationOptions, ConversationView } from './conversation.js';
|
|
8
|
+
import { type RuntimeError } from './failure.js';
|
|
9
|
+
import type { FiguresResult } from './figures.js';
|
|
10
|
+
import type { Holdings } from './holdings.js';
|
|
11
|
+
import type { Expecting } from './expectation.js';
|
|
5
12
|
import type { QueueEntry } from './outcome.js';
|
|
6
|
-
import type {
|
|
13
|
+
import type { DocumentResult, GroupResult, PendingResult } from './query.js';
|
|
14
|
+
import type { Readiness } from './readiness.js';
|
|
7
15
|
import type { RoomDraft, RoomDraftParts } from './room-draft.js';
|
|
8
16
|
import type { SyncStatus } from './status.js';
|
|
9
17
|
type Client = MdRuntimeClient | null;
|
|
10
|
-
export
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
export declare function useObserve(client: Client, topic: '
|
|
17
|
-
export declare function useObserve(client: Client, topic: '
|
|
18
|
-
export declare function useObserve(client: Client, topic: '
|
|
19
|
-
export declare function useObserve(client: Client, topic: '
|
|
20
|
-
export declare function useObserve(client: Client, topic: '
|
|
21
|
-
export declare function useObserve(client: Client, topic: '
|
|
22
|
-
export declare function useObserve(client: Client, topic: '
|
|
18
|
+
export type Observed<T> = {
|
|
19
|
+
readonly state: 'loading';
|
|
20
|
+
} | {
|
|
21
|
+
readonly state: 'ready';
|
|
22
|
+
readonly value: T;
|
|
23
|
+
};
|
|
24
|
+
export declare function useObserve(client: Client, topic: 'deployment-facts'): Observed<unknown>;
|
|
25
|
+
export declare function useObserve(client: Client, topic: 'rooms'): Observed<readonly AppRoom[]>;
|
|
26
|
+
export declare function useObserve(client: Client, topic: 'readiness'): Observed<Readiness>;
|
|
27
|
+
export declare function useObserve(client: Client, topic: 'connection-refusal'): Observed<ConnectionRefusal | null>;
|
|
28
|
+
export declare function useObserve(client: Client, topic: 'storage-loss'): Observed<string | null>;
|
|
29
|
+
export declare function useObserve(client: Client, topic: 'sync-status'): Observed<SyncStatus>;
|
|
30
|
+
export declare function useObserve(client: Client, topic: 'service-mode'): Observed<ServiceMode>;
|
|
31
|
+
export declare function useObserve(client: Client, topic: 'member'): Observed<Member | null>;
|
|
32
|
+
export declare function useObserve(client: Client, topic: 'authority-changes'): Observed<number>;
|
|
33
|
+
export declare function useObserve(client: Client, topic: 'query', query: DocumentQuery): Observed<DocumentResult | PendingResult>;
|
|
34
|
+
export declare function useObserve(client: Client, topic: 'query', query: GroupQuery): Observed<GroupResult | PendingResult>;
|
|
35
|
+
export declare function useObserve(client: Client, topic: 'queue', locator: string): Observed<readonly QueueEntry[]>;
|
|
36
|
+
export declare function useObserve(client: Client, topic: 'room-drafts'): Observed<readonly RoomDraft[]>;
|
|
37
|
+
export declare function useObserve(client: Client, topic: 'presentation'): Observed<unknown>;
|
|
38
|
+
export declare function useObserve(client: Client, topic: 'conversation', conversation: string, options: ConversationOptions): Observed<ConversationView>;
|
|
39
|
+
export declare function useObserve(client: Client, topic: 'conversations'): Observed<readonly ConversationEntry[]>;
|
|
40
|
+
export declare function useObserve(client: Client, topic: 'agents'): Observed<readonly ConversationAgent[]>;
|
|
41
|
+
export declare function useObserve(client: Client, topic: 'figures'): Observed<FiguresResult>;
|
|
42
|
+
export declare function useObserve(client: Client, topic: 'holdings'): Observed<Holdings>;
|
|
43
|
+
export declare function useReading<E extends {
|
|
44
|
+
readonly key: string;
|
|
45
|
+
}>(store: Pick<Expecting<E>, 'reads' | 'heard' | 'left'>, asks: (one: E) => boolean, shown: ((one: E) => boolean) | null): void;
|
|
23
46
|
export type Saving = {
|
|
24
47
|
readonly busy: boolean;
|
|
25
48
|
readonly outcome: SaveResult | null;
|
|
26
|
-
readonly failure:
|
|
27
|
-
save(room: string,
|
|
49
|
+
readonly failure: RuntimeError | null;
|
|
50
|
+
save(room: string, parts: ReadonlyMap<string, RoomDraftParts>): Promise<SaveResult>;
|
|
51
|
+
saveWritten(room: string, roomDrafts: readonly SavedRoomDraft[]): Promise<SaveResult>;
|
|
28
52
|
};
|
|
29
|
-
export declare function saveRoomDrafts(client: MdRuntimeClient, room: string, roomDrafts: ReadonlyMap<string, RoomDraftParts>): Promise<SaveResult>;
|
|
30
53
|
export declare function useSave(client: MdRuntimeClient): Saving;
|
|
31
54
|
export {};
|
|
32
55
|
//# sourceMappingURL=react.d.ts.map
|
package/dist/react.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"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"}
|