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