@agentshouse/mdruntime 0.1.0-c44866799613e → 0.1.0-c44d5cc00aee5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -17
- 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 +110 -112
- 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 +28 -51
- package/dist/bootstrap.d.ts +15 -18
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +252 -158
- 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 +1 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +4 -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 +27 -21
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +36 -17
- package/dist/collection.d.ts +23 -7
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +13 -19
- package/dist/compile.d.ts +8 -6
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +288 -329
- package/dist/connection.d.ts +5 -143
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +109 -5104
- 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 +143 -0
- package/dist/conversation-live.d.ts.map +1 -0
- package/dist/conversation-live.js +254 -0
- package/dist/conversation-row.d.ts +33 -0
- package/dist/conversation-row.d.ts.map +1 -0
- package/dist/conversation-row.js +53 -0
- package/dist/conversation.d.ts +65 -48
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +987 -838
- 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 -1
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +4 -0
- package/dist/entry.d.ts +3 -2
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +19 -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 +197 -0
- 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 +21 -8
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +73 -40
- 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 +34 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -5
- package/dist/install.d.ts +54 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +530 -0
- package/dist/lifecycle.d.ts +7 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +277 -0
- package/dist/listing.d.ts +48 -0
- package/dist/listing.d.ts.map +1 -0
- package/dist/listing.js +139 -0
- package/dist/live.d.ts +5 -4
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +64 -23
- 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 +2 -2
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +23 -13
- package/dist/memory.d.ts +17 -7
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +210 -97
- package/dist/messages.d.ts +33 -5
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +104 -36
- package/dist/model.d.ts +2 -11
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +0 -23
- 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 +4 -3
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +23 -17
- 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 +7 -4
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +18 -0
- package/dist/overlay.d.ts +6 -1
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +47 -21
- package/dist/page-metadata.d.ts +8 -0
- package/dist/page-metadata.d.ts.map +1 -0
- package/dist/page-metadata.js +19 -0
- package/dist/parts.d.ts +4 -0
- package/dist/parts.d.ts.map +1 -0
- package/dist/parts.js +13 -0
- package/dist/paths.d.ts +2 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +26 -0
- package/dist/preparation.d.ts +20 -0
- package/dist/preparation.d.ts.map +1 -0
- package/dist/preparation.js +227 -0
- package/dist/presence.d.ts +52 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +220 -0
- package/dist/queries.d.ts +16 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +282 -0
- package/dist/query.d.ts +14 -210
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -505
- package/dist/questions.d.ts +29 -0
- package/dist/questions.d.ts.map +1 -0
- package/dist/questions.js +115 -0
- package/dist/queue.d.ts +40 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +450 -0
- package/dist/reach.d.ts +15 -12
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +240 -149
- package/dist/react.d.ts +15 -2
- 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 +4 -19
- package/dist/readiness.d.ts.map +1 -1
- package/dist/readiness.js +4 -10
- package/dist/reads.d.ts +38 -10
- package/dist/reads.d.ts.map +1 -1
- package/dist/reads.js +163 -85
- package/dist/recovery.d.ts +3 -0
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +57 -1
- package/dist/refresh.d.ts +7 -5
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +35 -7
- 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 +12 -18
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +64 -34
- 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 +24 -10
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +142 -106
- 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 +14 -21
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +49 -186
- 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 -84
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +349 -170
- package/dist/saves.d.ts +32 -0
- package/dist/saves.d.ts.map +1 -0
- package/dist/saves.js +410 -0
- package/dist/search.d.ts +12 -63
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +9 -52
- 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 -7
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +13 -105
- package/dist/shown.d.ts +33 -0
- package/dist/shown.d.ts.map +1 -0
- package/dist/shown.js +302 -0
- package/dist/socket/admission.d.ts +7 -0
- package/dist/socket/admission.d.ts.map +1 -0
- package/dist/socket/admission.js +39 -0
- package/dist/socket/answers.d.ts +6 -0
- package/dist/socket/answers.d.ts.map +1 -0
- package/dist/socket/answers.js +20 -0
- package/dist/socket/lanes.d.ts +28 -0
- package/dist/socket/lanes.d.ts.map +1 -0
- package/dist/socket/lanes.js +103 -0
- package/dist/socket/reads.d.ts +10 -0
- package/dist/socket/reads.d.ts.map +1 -0
- package/dist/socket/reads.js +31 -0
- package/dist/socket/session.d.ts +38 -0
- package/dist/socket/session.d.ts.map +1 -0
- package/dist/socket/session.js +23 -0
- package/dist/socket.d.ts +67 -0
- package/dist/socket.d.ts.map +1 -0
- package/dist/socket.js +164 -0
- package/dist/source.d.ts +54 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +82 -0
- package/dist/status.d.ts +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 +214 -0
- package/dist/store/records.d.ts.map +1 -0
- package/dist/store/records.js +438 -0
- package/dist/store/room-held.d.ts +8 -0
- package/dist/store/room-held.d.ts.map +1 -0
- package/dist/store/room-held.js +17 -0
- package/dist/store/space.d.ts +11 -0
- package/dist/store/space.d.ts.map +1 -0
- package/dist/store/space.js +41 -0
- package/dist/store/watchers.d.ts +17 -0
- package/dist/store/watchers.d.ts.map +1 -0
- package/dist/store/watchers.js +56 -0
- package/dist/store/writes.d.ts +24 -0
- package/dist/store/writes.d.ts.map +1 -0
- package/dist/store/writes.js +125 -0
- package/dist/store.d.ts +120 -171
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +166 -414
- package/dist/stored.d.ts +62 -57
- package/dist/stored.d.ts.map +1 -1
- package/dist/stored.js +317 -239
- package/dist/surface.d.ts +88 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +220 -0
- package/dist/sync.d.ts +19 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +535 -0
- package/dist/tables.d.ts +126 -65
- package/dist/tables.d.ts.map +1 -1
- package/dist/tables.js +250 -113
- package/dist/tallies.d.ts +18 -0
- package/dist/tallies.d.ts.map +1 -0
- package/dist/tallies.js +128 -0
- package/dist/transfer.d.ts +0 -5
- package/dist/transfer.d.ts.map +1 -1
- package/dist/validation.d.ts +3 -4
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +42 -100
- 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 +65 -9
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +22 -5
- 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/fulltext.d.ts +0 -27
- package/dist/fulltext.d.ts.map +0 -1
- package/dist/fulltext.js +0 -368
- package/dist/log.d.ts +0 -5
- package/dist/log.d.ts.map +0 -1
- package/dist/log.js +0 -14
- package/dist/words.d.ts +0 -19
- package/dist/words.d.ts.map +0 -1
- package/dist/words.js +0 -150
package/dist/reach.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
import { QueryError } from '@agentshouse/mdmodel';
|
|
2
|
+
import { selected } from './collection.js';
|
|
1
3
|
import { unheldView } from './conversation.js';
|
|
2
4
|
import { modelTypes, NO_MODEL } from './model.js';
|
|
3
5
|
import { changeOf, digestApplied, digestOf, observing, } from './observation.js';
|
|
4
|
-
import { runtimeError } from './failure.js';
|
|
6
|
+
import { runtimeError, uncaught } from './failure.js';
|
|
5
7
|
import { failure, lockedRoom, ROOM_LOCKED, undeclared, UNREADABLE, } from './outcome.js';
|
|
6
8
|
import { beneath } from './paths.js';
|
|
7
9
|
import { moveTarget, readParts, staleWrite, } from './room-draft.js';
|
|
8
10
|
import { documentKey } from './rows.js';
|
|
9
|
-
import { undeclaredSearch } from './search.js';
|
|
10
11
|
const UNHELD_TYPES = { collection: modelTypes(NO_MODEL), typedSelection: null };
|
|
11
12
|
function unconversed(name) {
|
|
12
13
|
return () => Promise.resolve(undeclared(name));
|
|
@@ -14,33 +15,41 @@ function unconversed(name) {
|
|
|
14
15
|
const NO_CONVERSATION = {
|
|
15
16
|
list: () => Promise.resolve([]),
|
|
16
17
|
read: (conversation) => Promise.resolve(unheldView(conversation)),
|
|
17
|
-
create: unconversed('
|
|
18
|
-
send: unconversed('
|
|
19
|
-
answer: unconversed('
|
|
20
|
-
interrupt: unconversed('
|
|
21
|
-
kill: unconversed('
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
create: unconversed('conversations/create'),
|
|
19
|
+
send: unconversed('conversations/send'),
|
|
20
|
+
answer: unconversed('conversations/interaction/answer'),
|
|
21
|
+
interrupt: unconversed('conversations/interrupt'),
|
|
22
|
+
kill: unconversed('conversations/kill'),
|
|
23
|
+
delete: unconversed('conversations/delete'),
|
|
24
|
+
takeOut: unconversed('conversations/take-out'),
|
|
25
|
+
decide: unconversed('agent-functions/decide'),
|
|
26
|
+
rename: unconversed('conversations/rename'),
|
|
27
|
+
option: unconversed('conversations/option/set'),
|
|
28
|
+
retry: unconversed('conversations/retry'),
|
|
29
|
+
pins: () => Promise.resolve([]),
|
|
30
|
+
pin: () => Promise.resolve(),
|
|
31
|
+
openedTurns: () => Promise.resolve({}),
|
|
32
|
+
openTurn: () => Promise.resolve(),
|
|
33
|
+
dismissSuggestion: () => Promise.resolve(),
|
|
24
34
|
};
|
|
25
35
|
const NO_CHAT_DRAFT = {
|
|
26
36
|
write: () => Promise.resolve(),
|
|
27
37
|
prepend: () => Promise.resolve(),
|
|
38
|
+
append: () => Promise.resolve(),
|
|
28
39
|
discard: () => Promise.resolve(),
|
|
29
40
|
};
|
|
30
41
|
function areasOf(reach) {
|
|
31
42
|
return reach.areas ?? [];
|
|
32
43
|
}
|
|
33
|
-
function typedAreas(reach, room) {
|
|
34
|
-
return areasOf(reach).filter((area) => area.room === room && area.types.length > 0);
|
|
35
|
-
}
|
|
36
44
|
function fenced(reach, room, path) {
|
|
37
|
-
return areasOf(reach).some((area) => area.room === room &&
|
|
45
|
+
return areasOf(reach).some((area) => area.room === room &&
|
|
46
|
+
beneath(area.path, path) &&
|
|
47
|
+
!area.open.some((open) => beneath(open, path)));
|
|
38
48
|
}
|
|
39
49
|
export function holds(reach, room) {
|
|
40
50
|
return (reach === null ||
|
|
41
51
|
reach.rooms.includes(room) ||
|
|
42
|
-
reach.documents.some((document) => document.room === room)
|
|
43
|
-
typedAreas(reach, room).length > 0);
|
|
52
|
+
reach.documents.some((document) => document.room === room));
|
|
44
53
|
}
|
|
45
54
|
function wholly(reach, room) {
|
|
46
55
|
return reach === null || reach.rooms.includes(room);
|
|
@@ -49,14 +58,11 @@ export function governs(reach, room) {
|
|
|
49
58
|
if (wholly(reach, room.locator)) {
|
|
50
59
|
return { collection: true, selection: room.typedSelection !== null };
|
|
51
60
|
}
|
|
52
|
-
const
|
|
53
|
-
const paths =
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
...typedAreas(reach, room.locator).map(({ path }) => path),
|
|
58
|
-
];
|
|
59
|
-
return { collection: paths.some((path) => !selected(path)), selection: paths.some(selected) };
|
|
61
|
+
const within = (path) => selected({ selection: room.typedSelection }, path);
|
|
62
|
+
const paths = reach.documents
|
|
63
|
+
.filter((document) => document.room === room.locator)
|
|
64
|
+
.map(({ path }) => path);
|
|
65
|
+
return { collection: paths.some((path) => !within(path)), selection: paths.some(within) };
|
|
60
66
|
}
|
|
61
67
|
function covers(reach, room, path) {
|
|
62
68
|
return (reach === null ||
|
|
@@ -67,6 +73,19 @@ function covers(reach, room, path) {
|
|
|
67
73
|
function conversing(reach) {
|
|
68
74
|
return reach === null || reach.conversations;
|
|
69
75
|
}
|
|
76
|
+
function roomsAwaited(error, reach) {
|
|
77
|
+
return error.code === 'unknown-type' && reach !== null && reach.rooms.length === 0;
|
|
78
|
+
}
|
|
79
|
+
async function planInReach(runtime, input, reach, answered) {
|
|
80
|
+
try {
|
|
81
|
+
return await runtime.plan(input, reach);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
if (error instanceof QueryError && (answered || roomsAwaited(error, reach)))
|
|
85
|
+
return null;
|
|
86
|
+
throw error;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
70
89
|
export function planReach(reach) {
|
|
71
90
|
return reach === null
|
|
72
91
|
? null
|
|
@@ -76,7 +95,7 @@ export function planReach(reach) {
|
|
|
76
95
|
...new Set(reach.documents.map(({ room, path }) => documentKey(room, path))),
|
|
77
96
|
].sort(),
|
|
78
97
|
areas: areasOf(reach)
|
|
79
|
-
.map(({ room, path,
|
|
98
|
+
.map(({ room, path, open }) => ({ room, path, open: [...new Set(open)].sort() }))
|
|
80
99
|
.sort((left, right) => documentKey(left.room, left.path) < documentKey(right.room, right.path) ? -1 : 1),
|
|
81
100
|
};
|
|
82
101
|
}
|
|
@@ -112,12 +131,13 @@ function writeWithin(reach, write) {
|
|
|
112
131
|
function savedWithin(reach, room, result) {
|
|
113
132
|
if (reach === null || result.outcome === 'saved')
|
|
114
133
|
return result;
|
|
115
|
-
const { file, location, referrers, ...refusal } = result;
|
|
134
|
+
const { file, location, line, referrers, ...refusal } = result;
|
|
116
135
|
const hidden = file !== undefined && !covers(reach, room, file);
|
|
117
136
|
return {
|
|
118
137
|
...refusal,
|
|
119
138
|
...(file === undefined || hidden ? {} : { file }),
|
|
120
139
|
...(location === undefined || hidden ? {} : { location }),
|
|
140
|
+
...(line === undefined || hidden ? {} : { line }),
|
|
121
141
|
...(referrers === undefined
|
|
122
142
|
? {}
|
|
123
143
|
: { referrers: referrers.filter((path) => covers(reach, room, path)) }),
|
|
@@ -126,7 +146,8 @@ function savedWithin(reach, room, result) {
|
|
|
126
146
|
function statusWithin(reach, status) {
|
|
127
147
|
return {
|
|
128
148
|
...status,
|
|
129
|
-
attentionRequired: status.attentionRequired.filter((entry) =>
|
|
149
|
+
attentionRequired: status.attentionRequired.filter((entry) => covers(reach, entry.room, entry.path)),
|
|
150
|
+
unsent: status.unsent.filter((change) => covers(reach, change.room, change.path)),
|
|
130
151
|
};
|
|
131
152
|
}
|
|
132
153
|
function queueWithin(reach, room, entries) {
|
|
@@ -143,13 +164,13 @@ function queueWithin(reach, room, entries) {
|
|
|
143
164
|
});
|
|
144
165
|
}
|
|
145
166
|
function unreached(room) {
|
|
146
|
-
return runtimeError('room
|
|
167
|
+
return runtimeError('unknown-room', `Unknown Room ${room}`);
|
|
147
168
|
}
|
|
148
169
|
function lockedError(room) {
|
|
149
170
|
return runtimeError(ROOM_LOCKED, `${room} is locked until House confirms its access`, true);
|
|
150
171
|
}
|
|
151
172
|
function deviceUnreached() {
|
|
152
|
-
return runtimeError('device-unreached', 'Only the panel
|
|
173
|
+
return runtimeError('device-unreached', 'Only the panel reaches this device');
|
|
153
174
|
}
|
|
154
175
|
const ATTACH_REQUIRED = 'attach-required';
|
|
155
176
|
function attachRequired() {
|
|
@@ -158,10 +179,9 @@ function attachRequired() {
|
|
|
158
179
|
function carriesFile(parts) {
|
|
159
180
|
return parts !== null && typeof parts === 'object' && Object.hasOwn(parts, 'file');
|
|
160
181
|
}
|
|
161
|
-
export function narrowed(runtime, given,
|
|
182
|
+
export function narrowed(runtime, given, port) {
|
|
162
183
|
const { md, watch } = runtime;
|
|
163
184
|
let reach = given;
|
|
164
|
-
let port = told;
|
|
165
185
|
const open = new Set();
|
|
166
186
|
function following(begin, locking = false) {
|
|
167
187
|
let stop = begin();
|
|
@@ -177,70 +197,133 @@ export function narrowed(runtime, given, told) {
|
|
|
177
197
|
stop();
|
|
178
198
|
};
|
|
179
199
|
}
|
|
180
|
-
const unlocking = (rooms) => {
|
|
181
|
-
const
|
|
182
|
-
return
|
|
183
|
-
? null
|
|
184
|
-
: { pending: locked.map((room) => ({ room, awaits: 'unlock' })) };
|
|
200
|
+
const unlocking = (rooms, locked) => {
|
|
201
|
+
const held = (rooms ?? []).filter((room) => locked.includes(room));
|
|
202
|
+
return held.length === 0 ? null : { pending: held.map((room) => ({ room, awaits: 'unlock' })) };
|
|
185
203
|
};
|
|
186
|
-
const unlocked = (entries) => entries.filter((entry) => !
|
|
187
|
-
const intoLocked = (held) =>
|
|
188
|
-
|
|
204
|
+
const unlocked = (entries, locked) => entries.filter((entry) => !locked.includes(entry.room));
|
|
205
|
+
const intoLocked = async (held) => {
|
|
206
|
+
for (const move of held) {
|
|
207
|
+
if (move?.room !== undefined && (await runtime.locked(move.room)))
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
return false;
|
|
211
|
+
};
|
|
212
|
+
function ordered(deliver) {
|
|
213
|
+
let open = true;
|
|
214
|
+
let shown = Promise.resolve();
|
|
215
|
+
return {
|
|
216
|
+
push(making) {
|
|
217
|
+
shown = shown.then(() => making.then((value) => {
|
|
218
|
+
if (open)
|
|
219
|
+
deliver(value);
|
|
220
|
+
}, uncaught), uncaught);
|
|
221
|
+
},
|
|
222
|
+
stop() {
|
|
223
|
+
open = false;
|
|
224
|
+
},
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
function unlockedWatch(topic, input, deliver, fail, within) {
|
|
228
|
+
const shown = ordered(deliver);
|
|
229
|
+
const stop = watch(topic, input, (message) => {
|
|
230
|
+
shown.push(runtime.lockedRooms().then((locked) => within(message, locked)));
|
|
231
|
+
}, fail);
|
|
232
|
+
return () => {
|
|
233
|
+
shown.stop();
|
|
234
|
+
stop();
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
function lockedFirst(room, start, shut) {
|
|
238
|
+
let open = true;
|
|
239
|
+
let stop = () => { };
|
|
240
|
+
void (async () => {
|
|
241
|
+
const closed = !holds(reach, room) || (await runtime.locked(room));
|
|
242
|
+
if (!open)
|
|
243
|
+
return;
|
|
244
|
+
if (closed)
|
|
245
|
+
shut();
|
|
246
|
+
else
|
|
247
|
+
stop = start();
|
|
248
|
+
})();
|
|
249
|
+
return () => {
|
|
250
|
+
open = false;
|
|
251
|
+
stop();
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
const within = (topic, input, deliver, fail) => {
|
|
255
|
+
if (topic === 'read' && reach !== null) {
|
|
256
|
+
fail(deviceUnreached());
|
|
257
|
+
return () => { };
|
|
258
|
+
}
|
|
189
259
|
if (topic === 'rooms') {
|
|
190
|
-
return following(() => watch(topic, input, (rooms) => deliver(roomsWithin(reach, rooms))));
|
|
260
|
+
return following(() => watch(topic, input, (rooms) => deliver(roomsWithin(reach, rooms)), fail));
|
|
191
261
|
}
|
|
192
262
|
if (topic === 'readiness') {
|
|
193
263
|
return following(() => runtime.watchReadiness(port, reach, deliver));
|
|
194
264
|
}
|
|
195
265
|
if (topic === 'sync-status') {
|
|
196
|
-
return following(() =>
|
|
197
|
-
const
|
|
198
|
-
|
|
266
|
+
return following(() => unlockedWatch(topic, input, deliver, fail, (status, locked) => {
|
|
267
|
+
const shown = statusWithin(reach, status);
|
|
268
|
+
return { ...shown, attentionRequired: unlocked(shown.attentionRequired, locked) };
|
|
199
269
|
}), true);
|
|
200
270
|
}
|
|
201
271
|
if (topic === 'room-drafts') {
|
|
202
|
-
return following(() =>
|
|
272
|
+
return following(() => unlockedWatch(topic, input, deliver, fail, (drafts, locked) => unlocked(draftsWithin(reach, drafts), locked)), true);
|
|
203
273
|
}
|
|
204
274
|
if (topic === 'queue') {
|
|
205
275
|
const room = input[0];
|
|
206
|
-
return following(() =>
|
|
207
|
-
if (!holds(reach, room) || runtime.locked(room)) {
|
|
208
|
-
deliver([]);
|
|
209
|
-
return () => { };
|
|
210
|
-
}
|
|
211
|
-
return watch(topic, input, (entries) => deliver(queueWithin(reach, room, entries)));
|
|
212
|
-
}, true);
|
|
276
|
+
return following(() => lockedFirst(room, () => watch(topic, input, (entries) => deliver(queueWithin(reach, room, entries)), fail), () => deliver([])), true);
|
|
213
277
|
}
|
|
214
278
|
if (topic === 'query') {
|
|
215
|
-
const plan = runtime.plan(input[0], reach);
|
|
216
279
|
let held = null;
|
|
280
|
+
let planning = null;
|
|
281
|
+
const waiting = (result) => {
|
|
282
|
+
const answer = { result, keys: [] };
|
|
283
|
+
if (held === null || changeOf(held, answer) !== null)
|
|
284
|
+
deliver(answer);
|
|
285
|
+
held = digestOf(answer);
|
|
286
|
+
};
|
|
217
287
|
return following(() => {
|
|
218
|
-
const locked = unlocking(plan.rooms);
|
|
219
|
-
if (locked !== null) {
|
|
220
|
-
const answer = { result: locked, keys: [] };
|
|
221
|
-
if (held === null || changeOf(held, answer) !== null)
|
|
222
|
-
deliver(answer);
|
|
223
|
-
held = digestOf(answer);
|
|
224
|
-
return () => { };
|
|
225
|
-
}
|
|
226
|
-
let first = true;
|
|
227
288
|
let open = true;
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
289
|
+
let stop = () => { };
|
|
290
|
+
if (planning?.reach !== reach) {
|
|
291
|
+
planning = { reach, plan: planInReach(runtime, input[0], reach, held !== null) };
|
|
292
|
+
}
|
|
293
|
+
const planned = planning.plan;
|
|
294
|
+
void (async () => {
|
|
295
|
+
const plan = await planned;
|
|
296
|
+
const locked = await runtime.lockedRooms();
|
|
297
|
+
if (!open)
|
|
232
298
|
return;
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
const
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
299
|
+
if (plan === null)
|
|
300
|
+
return waiting({ pending: [] });
|
|
301
|
+
const pending = unlocking(plan.rooms, locked);
|
|
302
|
+
if (pending !== null)
|
|
303
|
+
return waiting(pending);
|
|
304
|
+
let first = true;
|
|
305
|
+
const heard = (message) => {
|
|
306
|
+
if (!first) {
|
|
307
|
+
held = digestApplied(held, message);
|
|
308
|
+
deliver(message);
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
first = false;
|
|
312
|
+
const change = held === null ? message : changeOf(held, message);
|
|
313
|
+
held = digestOf(message);
|
|
314
|
+
if (change !== null)
|
|
315
|
+
deliver(change);
|
|
316
|
+
};
|
|
317
|
+
stop = runtime.watchPlan({ ...plan, locked }, (message) => {
|
|
318
|
+
if (open)
|
|
319
|
+
heard(message);
|
|
320
|
+
}, (error) => {
|
|
321
|
+
if (open)
|
|
322
|
+
fail(error);
|
|
323
|
+
});
|
|
324
|
+
})().catch((error) => {
|
|
242
325
|
if (open)
|
|
243
|
-
|
|
326
|
+
fail(error);
|
|
244
327
|
});
|
|
245
328
|
return () => {
|
|
246
329
|
open = false;
|
|
@@ -251,7 +334,7 @@ export function narrowed(runtime, given, told) {
|
|
|
251
334
|
if (topic === 'conversation') {
|
|
252
335
|
return following(() => {
|
|
253
336
|
if (conversing(reach))
|
|
254
|
-
return watch(topic, input, deliver);
|
|
337
|
+
return watch(topic, input, deliver, fail);
|
|
255
338
|
deliver(unheldView(input[0]));
|
|
256
339
|
return () => { };
|
|
257
340
|
});
|
|
@@ -259,12 +342,18 @@ export function narrowed(runtime, given, told) {
|
|
|
259
342
|
if (topic === 'conversations' || topic === 'agents') {
|
|
260
343
|
return following(() => {
|
|
261
344
|
if (conversing(reach))
|
|
262
|
-
return watch(topic, input, deliver);
|
|
345
|
+
return watch(topic, input, deliver, fail);
|
|
263
346
|
deliver([]);
|
|
264
347
|
return () => { };
|
|
265
348
|
});
|
|
266
349
|
}
|
|
267
|
-
|
|
350
|
+
if (topic === 'figures' || topic === 'holdings') {
|
|
351
|
+
if (reach === null)
|
|
352
|
+
return watch(topic, input, deliver, fail);
|
|
353
|
+
fail(deviceUnreached());
|
|
354
|
+
return () => { };
|
|
355
|
+
}
|
|
356
|
+
return watch(topic, input, deliver, fail);
|
|
268
357
|
};
|
|
269
358
|
const files = new Map();
|
|
270
359
|
let handed = 0;
|
|
@@ -281,35 +370,36 @@ export function narrowed(runtime, given, told) {
|
|
|
281
370
|
const chatDraft = () => (conversing(reach) ? md.chatDraft : NO_CHAT_DRAFT);
|
|
282
371
|
const view = {
|
|
283
372
|
...md,
|
|
284
|
-
rooms: () => roomsWithin(reach,
|
|
285
|
-
query: ((input) => {
|
|
286
|
-
const plan = runtime
|
|
287
|
-
|
|
373
|
+
rooms: () => md.rooms().then((rooms) => roomsWithin(reach, rooms)),
|
|
374
|
+
query: (async (input) => {
|
|
375
|
+
const plan = await planInReach(runtime, input, reach, false);
|
|
376
|
+
if (plan === null)
|
|
377
|
+
return { pending: [] };
|
|
378
|
+
const locked = await runtime.lockedRooms();
|
|
379
|
+
return unlocking(plan.rooms, locked) ?? runtime.query({ ...plan, locked });
|
|
288
380
|
}),
|
|
289
|
-
search: (input) =>
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
types(room) {
|
|
293
|
-
if (holds(reach, room) && runtime.locked(room))
|
|
381
|
+
search: (input) => runtime.search(input, reach),
|
|
382
|
+
async types(room) {
|
|
383
|
+
if (holds(reach, room) && (await runtime.locked(room)))
|
|
294
384
|
throw lockedError(room);
|
|
295
385
|
if (wholly(reach, room))
|
|
296
386
|
return md.types(room);
|
|
297
387
|
if (!holds(reach, room))
|
|
298
388
|
return structuredClone(UNHELD_TYPES);
|
|
299
|
-
|
|
300
|
-
return typesWithin(reach, listed, md.types(room));
|
|
389
|
+
return typesWithin(reach, await runtime.room(room), await md.types(room));
|
|
301
390
|
},
|
|
302
391
|
async save(room, roomDrafts, writtenBy) {
|
|
303
392
|
if (!holds(reach, room))
|
|
304
393
|
throw unreached(room);
|
|
305
|
-
if (runtime.locked(room))
|
|
394
|
+
if (await runtime.locked(room)) {
|
|
306
395
|
return { outcome: 'refused', code: ROOM_LOCKED, retryable: true };
|
|
396
|
+
}
|
|
307
397
|
const held = (await Promise.all(roomDrafts.map(({ path }) => md.roomDraft.read(room, path)))).map((draft) => draft?.parts.move);
|
|
308
398
|
const outside = roomDrafts.find(({ path }, at) => !covers(reach, room, path) || !moves(reach, room, held[at]));
|
|
309
399
|
if (outside !== undefined) {
|
|
310
400
|
return { outcome: 'refused', code: 'stale', retryable: false, file: outside.path };
|
|
311
401
|
}
|
|
312
|
-
if (intoLocked(held))
|
|
402
|
+
if (await intoLocked(held))
|
|
313
403
|
return { outcome: 'refused', code: ROOM_LOCKED, retryable: true };
|
|
314
404
|
return savedWithin(reach, room, await md.save(room, roomDrafts, writtenBy));
|
|
315
405
|
},
|
|
@@ -320,47 +410,48 @@ export function narrowed(runtime, given, told) {
|
|
|
320
410
|
if (filed !== undefined) {
|
|
321
411
|
return { outcome: 'refused', code: ATTACH_REQUIRED, retryable: false, file: filed.path };
|
|
322
412
|
}
|
|
323
|
-
if (runtime.locked(room))
|
|
413
|
+
if (await runtime.locked(room)) {
|
|
324
414
|
return { outcome: 'refused', code: ROOM_LOCKED, retryable: true };
|
|
325
|
-
|
|
415
|
+
}
|
|
416
|
+
const held = parts.map(({ path, parts: one }) => readParts(one, path).move);
|
|
326
417
|
if (parts.some(({ path }, at) => !covers(reach, room, path) || !moves(reach, room, held[at]))) {
|
|
327
418
|
throw unreached(room);
|
|
328
419
|
}
|
|
329
|
-
if (intoLocked(held))
|
|
420
|
+
if (await intoLocked(held))
|
|
330
421
|
return { outcome: 'refused', code: ROOM_LOCKED, retryable: true };
|
|
331
422
|
return savedWithin(reach, room, await md.saveParts(room, parts, writtenBy));
|
|
332
423
|
},
|
|
333
|
-
resolve(room, path, destination) {
|
|
334
|
-
const at = runtime.located(room, path, destination);
|
|
424
|
+
async resolve(room, path, destination) {
|
|
425
|
+
const at = await runtime.located(room, path, destination);
|
|
335
426
|
return at !== null && !covers(reach, at.room, at.path)
|
|
336
|
-
?
|
|
427
|
+
? UNREADABLE
|
|
337
428
|
: md.resolve(room, path, destination);
|
|
338
429
|
},
|
|
339
|
-
history: (room, path, query) => !covers(reach, room, path)
|
|
340
|
-
?
|
|
341
|
-
: runtime.locked(room)
|
|
342
|
-
?
|
|
430
|
+
history: async (room, path, query) => !covers(reach, room, path)
|
|
431
|
+
? failure({ kind: 'room-not-readable', locator: room })
|
|
432
|
+
: (await runtime.locked(room))
|
|
433
|
+
? lockedRoom(room)
|
|
343
434
|
: md.history(room, path, query),
|
|
344
435
|
binaryFile: {
|
|
345
|
-
read: (room, path, revision) => !covers(reach, room, path)
|
|
346
|
-
?
|
|
347
|
-
: runtime.locked(room)
|
|
348
|
-
?
|
|
436
|
+
read: async (room, path, revision) => !covers(reach, room, path)
|
|
437
|
+
? failure({ kind: 'room-not-readable', locator: room })
|
|
438
|
+
: (await runtime.locked(room))
|
|
439
|
+
? lockedRoom(room)
|
|
349
440
|
: hand(md.binaryFile.read(room, path, revision)),
|
|
350
|
-
link: (room, path, revision) => !covers(reach, room, path)
|
|
351
|
-
?
|
|
352
|
-
: runtime.locked(room)
|
|
353
|
-
?
|
|
441
|
+
link: async (room, path, revision) => !covers(reach, room, path)
|
|
442
|
+
? failure({ kind: 'room-not-readable', locator: room })
|
|
443
|
+
: (await runtime.locked(room))
|
|
444
|
+
? lockedRoom(room)
|
|
354
445
|
: md.binaryFile.link(room, path, revision),
|
|
355
|
-
show: (room, path, revision) => !covers(reach, room, path)
|
|
356
|
-
?
|
|
357
|
-
: runtime.locked(room)
|
|
358
|
-
?
|
|
446
|
+
show: async (room, path, revision) => !covers(reach, room, path)
|
|
447
|
+
? failure({ kind: 'room-not-readable', locator: room })
|
|
448
|
+
: (await runtime.locked(room))
|
|
449
|
+
? lockedRoom(room)
|
|
359
450
|
: hand(md.binaryFile.show(room, path, revision)),
|
|
360
|
-
attach: (room, file) => !wholly(reach, room)
|
|
361
|
-
?
|
|
362
|
-
: runtime.locked(room)
|
|
363
|
-
?
|
|
451
|
+
attach: async (room, file) => !wholly(reach, room)
|
|
452
|
+
? failure({ kind: 'room-not-readable', locator: room })
|
|
453
|
+
: (await runtime.locked(room))
|
|
454
|
+
? lockedRoom(room)
|
|
364
455
|
: md.binaryFile.attach(room, file),
|
|
365
456
|
async part(file, part) {
|
|
366
457
|
const key = files.get(file);
|
|
@@ -373,42 +464,37 @@ export function narrowed(runtime, given, told) {
|
|
|
373
464
|
},
|
|
374
465
|
},
|
|
375
466
|
reached: async (room, roomVersion, path) => (path === undefined ? wholly(reach, room) : covers(reach, room, path)) &&
|
|
376
|
-
!runtime.locked(room) &&
|
|
467
|
+
!(await runtime.locked(room)) &&
|
|
377
468
|
(await md.reached(room, roomVersion, path)),
|
|
378
|
-
log: () => (reach === null ? md.log() : ''),
|
|
379
469
|
cleanUp: () => (reach === null ? md.cleanUp() : Promise.reject(deviceUnreached())),
|
|
470
|
+
unsent: () => (reach === null ? md.unsent() : Promise.reject(deviceUnreached())),
|
|
471
|
+
reset: () => (reach === null ? md.reset() : Promise.reject(deviceUnreached())),
|
|
472
|
+
readAgain: () => (reach === null ? md.readAgain() : Promise.reject(deviceUnreached())),
|
|
380
473
|
roomDraft: {
|
|
381
|
-
list: () => md.roomDraft.list()
|
|
474
|
+
list: async () => unlocked(draftsWithin(reach, await md.roomDraft.list()), await runtime.lockedRooms()),
|
|
382
475
|
async read(room, path) {
|
|
383
476
|
if (!covers(reach, room, path))
|
|
384
477
|
return null;
|
|
385
|
-
if (runtime.locked(room))
|
|
478
|
+
if (await runtime.locked(room))
|
|
386
479
|
throw lockedError(room);
|
|
387
480
|
return shownDraft(reach, await md.roomDraft.read(room, path));
|
|
388
481
|
},
|
|
389
|
-
write(room, path, revision, parts, next) {
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
}
|
|
401
|
-
catch (error) {
|
|
402
|
-
return Promise.reject(error);
|
|
403
|
-
}
|
|
404
|
-
return md.roomDraft
|
|
405
|
-
.write(room, path, revision, parts, next)
|
|
406
|
-
.then((written) => writeWithin(reach, written));
|
|
482
|
+
async write(room, path, revision, parts, next) {
|
|
483
|
+
if (reach !== null && carriesFile(parts))
|
|
484
|
+
throw attachRequired();
|
|
485
|
+
const move = readParts(parts, path).move;
|
|
486
|
+
if (!covers(reach, room, path) || !moves(reach, room, move))
|
|
487
|
+
throw unreached(room);
|
|
488
|
+
if (await runtime.locked(room))
|
|
489
|
+
throw lockedError(room);
|
|
490
|
+
if (await intoLocked([move]))
|
|
491
|
+
throw lockedError(move.room);
|
|
492
|
+
return writeWithin(reach, await md.roomDraft.write(room, path, revision, parts, next));
|
|
407
493
|
},
|
|
408
494
|
async discard(room, path, revision) {
|
|
409
495
|
if (!covers(reach, room, path))
|
|
410
496
|
return staleWrite(null);
|
|
411
|
-
if (runtime.locked(room))
|
|
497
|
+
if (await runtime.locked(room))
|
|
412
498
|
throw lockedError(room);
|
|
413
499
|
return writeWithin(reach, await md.roomDraft.discard(room, path, revision));
|
|
414
500
|
},
|
|
@@ -418,15 +504,25 @@ export function narrowed(runtime, given, told) {
|
|
|
418
504
|
read: (id, options) => conversation().read(id, options),
|
|
419
505
|
create: (input) => conversation().create(input),
|
|
420
506
|
send: (id, operation, draft) => conversation().send(id, operation, draft),
|
|
421
|
-
answer: (id, answer) => conversation().answer(id, answer),
|
|
422
|
-
interrupt: (id) => conversation().interrupt(id),
|
|
423
|
-
kill: (id) => conversation().kill(id),
|
|
424
|
-
|
|
425
|
-
|
|
507
|
+
answer: (id, answer, operation) => conversation().answer(id, answer, operation),
|
|
508
|
+
interrupt: (id, operation) => conversation().interrupt(id, operation),
|
|
509
|
+
kill: (id, operation) => conversation().kill(id, operation),
|
|
510
|
+
delete: (id, operation) => conversation().delete(id, operation),
|
|
511
|
+
takeOut: (id, message, operation) => conversation().takeOut(id, message, operation),
|
|
512
|
+
decide: (request, decision, operation) => conversation().decide(request, decision, operation),
|
|
513
|
+
rename: (id, name, operation) => conversation().rename(id, name, operation),
|
|
514
|
+
option: (id, option, value, operation) => conversation().option(id, option, value, operation),
|
|
515
|
+
retry: (id, message, operation) => conversation().retry(id, message, operation),
|
|
516
|
+
pins: () => conversation().pins(),
|
|
517
|
+
pin: (figures) => conversation().pin(figures),
|
|
518
|
+
openedTurns: () => conversation().openedTurns(),
|
|
519
|
+
openTurn: (id, turn) => conversation().openTurn(id, turn),
|
|
520
|
+
dismissSuggestion: (id, suggestion) => conversation().dismissSuggestion(id, suggestion),
|
|
426
521
|
},
|
|
427
522
|
chatDraft: {
|
|
428
523
|
write: (id, draft, revision) => chatDraft().write(id, draft, revision),
|
|
429
524
|
prepend: (id, draft) => chatDraft().prepend(id, draft),
|
|
525
|
+
append: (id, draft) => chatDraft().append(id, draft),
|
|
430
526
|
discard: (id) => chatDraft().discard(id),
|
|
431
527
|
},
|
|
432
528
|
observe: observing(within),
|
|
@@ -439,10 +535,5 @@ export function narrowed(runtime, given, told) {
|
|
|
439
535
|
for (const restart of [...open])
|
|
440
536
|
restart();
|
|
441
537
|
},
|
|
442
|
-
facts(next) {
|
|
443
|
-
port = next;
|
|
444
|
-
for (const restart of [...open])
|
|
445
|
-
restart();
|
|
446
|
-
},
|
|
447
538
|
};
|
|
448
539
|
}
|
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;
|