@agentshouse/mdruntime 0.1.0-c0136de3edfbe → 0.1.0-c014edb0e9d9b
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 +8 -8
- package/dist/acceptance.d.ts +0 -3
- package/dist/acceptance.d.ts.map +1 -1
- package/dist/acceptance.js +74 -145
- package/dist/act-lanes.d.ts +33 -0
- package/dist/act-lanes.d.ts.map +1 -0
- package/dist/act-lanes.js +177 -0
- package/dist/actions.d.ts +7 -2
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +44 -31
- package/dist/adapter.d.ts +30 -44
- package/dist/adapter.d.ts.map +1 -1
- package/dist/bootstrap.d.ts +1 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +6 -18
- 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.map +1 -1
- package/dist/change.js +4 -2
- package/dist/chat-types.d.ts +2 -0
- package/dist/chat-types.d.ts.map +1 -1
- package/dist/chat-types.js +11 -0
- package/dist/client.d.ts +9 -12
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +29 -14
- package/dist/collection.d.ts +22 -4
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +12 -2
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +15 -21
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +30 -17
- 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.map +1 -1
- package/dist/conversation-row.js +7 -1
- package/dist/conversation.d.ts +44 -44
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +904 -1024
- package/dist/declaration.d.ts +10 -0
- package/dist/declaration.d.ts.map +1 -0
- package/dist/declaration.js +24 -0
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +18 -40
- package/dist/durability.d.ts +12 -0
- package/dist/durability.d.ts.map +1 -1
- package/dist/expectation.d.ts +4 -2
- package/dist/expectation.d.ts.map +1 -1
- package/dist/expectation.js +33 -11
- 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 +1 -0
- package/dist/figures.d.ts.map +1 -1
- package/dist/figures.js +2 -2
- package/dist/holdings.d.ts +29 -0
- package/dist/holdings.d.ts.map +1 -0
- package/dist/holdings.js +95 -0
- package/dist/host.d.ts +17 -2
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +38 -8
- package/dist/index.d.ts +13 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -3
- package/dist/install.d.ts +1 -3
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +49 -70
- package/dist/lifecycle.d.ts +1 -1
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +42 -30
- package/dist/listing.d.ts +6 -11
- package/dist/listing.d.ts.map +1 -1
- package/dist/listing.js +25 -61
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +3 -3
- package/dist/locks.d.ts +2 -4
- package/dist/locks.d.ts.map +1 -1
- package/dist/locks.js +10 -38
- package/dist/lost.d.ts.map +1 -1
- package/dist/lost.js +10 -21
- package/dist/media.d.ts +1 -1
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +4 -4
- package/dist/memory.d.ts +4 -2
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +38 -20
- package/dist/messages.d.ts +1 -4
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +14 -32
- package/dist/model.d.ts +0 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +0 -5
- package/dist/models.d.ts +4 -8
- package/dist/models.d.ts.map +1 -1
- package/dist/models.js +97 -134
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +12 -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.map +1 -1
- package/dist/opening.js +8 -5
- package/dist/outcome.d.ts +6 -1
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +15 -0
- package/dist/overlay.d.ts +2 -1
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +32 -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 +3 -51
- package/dist/parts.d.ts.map +1 -1
- package/dist/parts.js +14 -111
- package/dist/paths.d.ts +1 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +22 -0
- package/dist/preparation.d.ts.map +1 -1
- package/dist/preparation.js +22 -15
- 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 +1 -1
- package/dist/queries.d.ts.map +1 -1
- package/dist/queries.js +5 -7
- package/dist/query.d.ts +0 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/questions.d.ts +2 -0
- package/dist/questions.d.ts.map +1 -1
- package/dist/questions.js +5 -1
- 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.map +1 -1
- package/dist/reach.js +28 -9
- package/dist/react.d.ts +15 -0
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +15 -1
- package/dist/readiness.d.ts +0 -1
- package/dist/readiness.d.ts.map +1 -1
- package/dist/reads.d.ts +4 -1
- package/dist/reads.d.ts.map +1 -1
- package/dist/reads.js +47 -5
- package/dist/refresh.js +2 -2
- package/dist/refusal.d.ts.map +1 -1
- package/dist/refusal.js +5 -4
- package/dist/replica.d.ts +5 -10
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +15 -16
- 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 +4 -6
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +36 -52
- package/dist/room-drafts.d.ts.map +1 -1
- package/dist/room-drafts.js +17 -16
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +3 -4
- package/dist/runtime.d.ts +11 -17
- package/dist/runtime.d.ts.map +1 -1
- package/dist/save.d.ts +41 -86
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +232 -112
- package/dist/saves.d.ts +2 -40
- package/dist/saves.d.ts.map +1 -1
- package/dist/saves.js +107 -698
- package/dist/seed.d.ts.map +1 -1
- package/dist/seed.js +2 -3
- package/dist/shared.d.ts +1 -6
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +13 -95
- package/dist/shown.d.ts +4 -3
- package/dist/shown.d.ts.map +1 -1
- package/dist/shown.js +29 -33
- package/dist/socket/lanes.d.ts +2 -1
- package/dist/socket/lanes.d.ts.map +1 -1
- package/dist/socket/lanes.js +5 -2
- package/dist/socket/session.d.ts +0 -1
- package/dist/socket/session.d.ts.map +1 -1
- package/dist/socket.d.ts +2 -4
- package/dist/socket.d.ts.map +1 -1
- package/dist/socket.js +4 -8
- package/dist/source.d.ts.map +1 -1
- package/dist/source.js +5 -4
- package/dist/store/records.d.ts +4 -4
- package/dist/store/records.d.ts.map +1 -1
- package/dist/store/records.js +33 -11
- package/dist/store/space.d.ts +1 -1
- package/dist/store/space.d.ts.map +1 -1
- package/dist/store/space.js +0 -2
- package/dist/store/watchers.js +1 -2
- package/dist/store.d.ts +11 -6
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +38 -13
- package/dist/stored.d.ts +1 -1
- package/dist/stored.d.ts.map +1 -1
- package/dist/stored.js +22 -10
- package/dist/surface.d.ts +4 -2
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +20 -14
- package/dist/sync.d.ts +0 -1
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +91 -82
- package/dist/tables.d.ts +13 -8
- package/dist/tables.d.ts.map +1 -1
- package/dist/tables.js +25 -12
- package/dist/tallies.js +5 -5
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +2 -2
- package/dist/wire.d.ts +41 -4
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +13 -3
- package/package.json +3 -2
- package/dist/attempt.d.ts +0 -16
- package/dist/attempt.d.ts.map +0 -1
- package/dist/attempt.js +0 -70
- package/dist/job.d.ts +0 -33
- package/dist/job.d.ts.map +0 -1
- package/dist/job.js +0 -54
- package/dist/socket/rooms.d.ts +0 -43
- package/dist/socket/rooms.d.ts.map +0 -1
- package/dist/socket/rooms.js +0 -90
- package/dist/store/fences.d.ts +0 -16
- package/dist/store/fences.d.ts.map +0 -1
- package/dist/store/fences.js +0 -26
package/dist/surface.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { called, located, readHistory, resolveReference } from './actions.js';
|
|
2
|
+
import { chatDraftSurface, conversationSurface, watchConversation, watchConversationAgents, watchConversationList, } from './conversation.js';
|
|
3
|
+
import { uncaught } from './failure.js';
|
|
4
|
+
import { CLEANED_TOPIC, watchHoldings } from './holdings.js';
|
|
2
5
|
import { reachedBy, writtenAfter } from './install.js';
|
|
3
6
|
import { declarationOf, listingNow, modelIn, shownRooms } from './listing.js';
|
|
4
7
|
import { stop } from './lifecycle.js';
|
|
5
8
|
import { locked, lockedRooms, watchLocks } from './locks.js';
|
|
6
|
-
import { modelTypes
|
|
9
|
+
import { modelTypes } from './model.js';
|
|
7
10
|
import { observing } from './observation.js';
|
|
8
11
|
import { watchReadiness } from './preparation.js';
|
|
9
12
|
import { planned, rowsQuery, searched, watchPlan, watchPlanned } from './queries.js';
|
|
@@ -36,7 +39,7 @@ function watchMember({ store }, deliver) {
|
|
|
36
39
|
.then(({ member }) => {
|
|
37
40
|
if (watcher.held())
|
|
38
41
|
deliver(member);
|
|
39
|
-
},
|
|
42
|
+
}, uncaught);
|
|
40
43
|
return watcher.stop;
|
|
41
44
|
}
|
|
42
45
|
function watchQueue(runtime, locator, deliver) {
|
|
@@ -58,14 +61,16 @@ function watching(runtime) {
|
|
|
58
61
|
if (topic === 'room-drafts')
|
|
59
62
|
return watchRoomDrafts(runtime, deliver);
|
|
60
63
|
if (topic === 'conversation') {
|
|
61
|
-
return conversations
|
|
64
|
+
return watchConversation(conversations, input[0], input[1], deliver);
|
|
62
65
|
}
|
|
63
66
|
if (topic === 'conversations')
|
|
64
|
-
return conversations
|
|
67
|
+
return watchConversationList(conversations, deliver);
|
|
65
68
|
if (topic === 'agents')
|
|
66
|
-
return conversations
|
|
69
|
+
return watchConversationAgents(conversations, deliver);
|
|
67
70
|
if (topic === 'figures')
|
|
68
71
|
return figures.watch(deliver, fail);
|
|
72
|
+
if (topic === 'holdings')
|
|
73
|
+
return watchHoldings(runtime, deliver, fail);
|
|
69
74
|
if (topic === 'read')
|
|
70
75
|
return lastAnswers.watch(input[0], input[1], deliver);
|
|
71
76
|
if (topic === 'presentation')
|
|
@@ -112,10 +117,9 @@ function roomsOnce(runtime) {
|
|
|
112
117
|
async function typesOf(runtime, locator) {
|
|
113
118
|
const { store, builtIn } = runtime;
|
|
114
119
|
const held = (await store.rooms([locator])).get(locator);
|
|
115
|
-
const
|
|
116
|
-
const room = fenced ? undefined : declarationOf(runtime, locator, held)?.room;
|
|
120
|
+
const room = declarationOf(runtime, locator, held)?.room;
|
|
117
121
|
return {
|
|
118
|
-
collection: modelTypes(
|
|
122
|
+
collection: modelTypes(modelIn(runtime, locator, held)),
|
|
119
123
|
typedSelection: (room?.typedSelection ?? null) === null ? null : modelTypes(builtIn),
|
|
120
124
|
};
|
|
121
125
|
}
|
|
@@ -142,11 +146,11 @@ function mdRuntime(runtime, watch) {
|
|
|
142
146
|
search: (input) => searched(runtime, input, null),
|
|
143
147
|
types: (locator) => typesOf(runtime, locator),
|
|
144
148
|
roomDraft: roomDraftSurface(runtime),
|
|
145
|
-
conversation: conversations
|
|
146
|
-
chatDraft: conversations
|
|
149
|
+
conversation: conversationSurface(conversations),
|
|
150
|
+
chatDraft: chatDraftSurface(conversations),
|
|
147
151
|
presentation: presentationSurface(runtime),
|
|
148
|
-
save: (room, named, writtenBy) =>
|
|
149
|
-
saveParts: (room, parts, writtenBy) =>
|
|
152
|
+
save: (room, named, writtenBy) => saveRoomDrafts(runtime, room, named, writtenBy),
|
|
153
|
+
saveParts: (room, parts, writtenBy) => saveParts(runtime, room, parts, writtenBy),
|
|
150
154
|
history: (locator, path, query) => readHistory(runtime, locator, path, query),
|
|
151
155
|
resolve: (room, path, destination) => resolveReference(runtime, room, path, destination),
|
|
152
156
|
binaryFile: binaryFileSurface(runtime),
|
|
@@ -159,7 +163,9 @@ function mdRuntime(runtime, watch) {
|
|
|
159
163
|
log: () => journal.export(),
|
|
160
164
|
async cleanUp() {
|
|
161
165
|
const freed = await store.ask({ kind: 'opened.clean' });
|
|
162
|
-
|
|
166
|
+
const tidied = (await shell.cleanUp?.()) ?? 0;
|
|
167
|
+
store.tell(CLEANED_TOPIC, undefined);
|
|
168
|
+
return freed + tidied;
|
|
163
169
|
},
|
|
164
170
|
unsent: () => store.ask({ kind: 'authored.unsent' }),
|
|
165
171
|
reset: () => shell.reset(),
|
|
@@ -169,7 +175,7 @@ function mdRuntime(runtime, watch) {
|
|
|
169
175
|
persistence: () => store.device.now().persistence === 'granted',
|
|
170
176
|
async retry() {
|
|
171
177
|
journal.record('retry');
|
|
172
|
-
|
|
178
|
+
store.prepareAgain();
|
|
173
179
|
store.readiness.queue();
|
|
174
180
|
if (store.space.full())
|
|
175
181
|
await store.space.probe();
|
package/dist/sync.d.ts
CHANGED
|
@@ -8,7 +8,6 @@ export type Attempt = 'opened' | 'unstreamed' | 'authorized';
|
|
|
8
8
|
export declare const OPENING_LANE = "opening";
|
|
9
9
|
export declare function advanced(runtime: Runtime, room: DiscoveredRoom, local: RuntimeStore, authorized: Authorization): Promise<Withheld | null>;
|
|
10
10
|
export declare function withhold(runtime: Runtime, withheld: Withheld, room: DiscoveredRoom, local: RuntimeStore, progress: CycleProgress): Promise<void>;
|
|
11
|
-
export declare function synchronize(runtime: Runtime, listed: readonly DiscoveredRoom[], local: RuntimeStore, progress: CycleProgress, attempt: Attempt, live: Live): Promise<void>;
|
|
12
11
|
export declare function loadRoom(runtime: Runtime, room: DiscoveredRoom, local: RuntimeStore, progress: CycleProgress, live: Live, unheld?: Unheld): Promise<void>;
|
|
13
12
|
export declare function reload(runtime: Runtime, room: DiscoveredRoom, local: RuntimeStore, progress: CycleProgress, live: Live): Promise<void>;
|
|
14
13
|
export declare function finishOpening(runtime: Runtime, progress: CycleProgress, live: Live): Promise<void>;
|
package/dist/sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,cAAc,EACd,SAAS,EACT,UAAU,EACX,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,cAAc,EACd,SAAS,EACT,UAAU,EACX,MAAM,cAAc,CAAC;AAUtB,OAAO,EASL,KAAK,MAAM,EACX,KAAK,QAAQ,EACd,MAAM,cAAc,CAAC;AAQtB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAU5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,YAAY,CAAC;AAG5D,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC;AAE7D,eAAO,MAAM,YAAY,YAAY,CAAC;AA2FtC,wBAAgB,QAAQ,CACtB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,aAAa,GACxB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAI1B;AAED,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,IAAI,CAAC,CAiCf;AA4GD,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,MAAM,iBAmBhB;AAED,wBAAsB,MAAM,CAC1B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,IAAI,iBA0BX;AAsDD,wBAAsB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,iBA8BxF;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC/F;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB7D;AAED,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO,QAK3E;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BxF;AAyDD,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA4D7E"}
|
package/dist/sync.js
CHANGED
|
@@ -1,21 +1,25 @@
|
|
|
1
|
-
import { submitAll, submitLater } from './acceptance.js';
|
|
2
1
|
import { resendCalls, resendLater } from './actions.js';
|
|
2
|
+
import { catchUpConversations, reconcileConversations, resendConversations, } from './conversation.js';
|
|
3
|
+
import { declared, sameDeclaration } from './declaration.js';
|
|
3
4
|
import { applyDiscovery, discoverRooms, malformed, signIn } from './discovery.js';
|
|
4
5
|
import { behind, caughtUpTo, publish, pullBootstrap, pullRefresh, reachedBy, replaced, standingAt, } from './install.js';
|
|
5
|
-
import { heldRooms,
|
|
6
|
-
import {
|
|
6
|
+
import { heldRooms, name } from './listing.js';
|
|
7
|
+
import { retainModel, revoked, scoped } from './models.js';
|
|
8
|
+
import { refusalError } from './failure.js';
|
|
7
9
|
import { refuse } from './refusal.js';
|
|
8
|
-
import { emitRooms, moveTo, rest, roomUnreadable, transferring, AUTHORITY_TOPIC } from './shown.js';
|
|
10
|
+
import { emitRooms, moveTo, rest, roomUnreadable, submissionDue, transferring, AUTHORITY_TOPIC, } from './shown.js';
|
|
9
11
|
import { unconfirmed } from './transfer.js';
|
|
10
12
|
export const OPENING_LANE = 'opening';
|
|
13
|
+
const FINISHING = 'finishing';
|
|
11
14
|
async function advance(runtime, room, local, authorized, running, unheld) {
|
|
12
|
-
const { store, socket } = runtime;
|
|
15
|
+
const { store, socket, presence } = runtime;
|
|
13
16
|
const live = () => running() && !store.space.full();
|
|
14
17
|
if (!live())
|
|
15
18
|
return unconfirmed;
|
|
16
19
|
const held = unheld === undefined ? await store.record(room.locator) : undefined;
|
|
17
20
|
if (socket.streamed && (held !== undefined || !store.installs.of(room.locator).beyondHorizon)) {
|
|
18
|
-
|
|
21
|
+
presence.stood(room.locator, false);
|
|
22
|
+
runtime.retries.succeeded('download', room.locator);
|
|
19
23
|
await name(runtime, room.locator);
|
|
20
24
|
return null;
|
|
21
25
|
}
|
|
@@ -26,7 +30,7 @@ async function advance(runtime, room, local, authorized, running, unheld) {
|
|
|
26
30
|
return advance(runtime, room, local, authorized, live);
|
|
27
31
|
if (refreshed !== 'beyond-horizon')
|
|
28
32
|
return refreshed;
|
|
29
|
-
if (
|
|
33
|
+
if (presence.standing(room.locator).reloadDue)
|
|
30
34
|
return unconfirmed;
|
|
31
35
|
replaced(store, [room.locator]);
|
|
32
36
|
}
|
|
@@ -44,18 +48,15 @@ async function advance(runtime, room, local, authorized, running, unheld) {
|
|
|
44
48
|
: advance(runtime, room, local, authorized, live);
|
|
45
49
|
}
|
|
46
50
|
async function refreshedRoom(runtime, room, local, authorized, held, live, hold, refresh) {
|
|
47
|
-
const { store, socket } = runtime;
|
|
48
|
-
const { rooms } = socket;
|
|
51
|
+
const { store, socket, presence } = runtime;
|
|
49
52
|
const refreshed = await pullRefresh(runtime, authorized, held, live, hold, refresh);
|
|
50
53
|
if (!live())
|
|
51
54
|
return unconfirmed;
|
|
52
55
|
if (refreshed.kind === 'still-current') {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
readable(runtime, room);
|
|
56
|
+
presence.stood(room.locator, false);
|
|
57
|
+
runtime.retries.succeeded('download', room.locator);
|
|
58
|
+
if (presence.readable(room.locator))
|
|
57
59
|
emitRooms(runtime);
|
|
58
|
-
}
|
|
59
60
|
return null;
|
|
60
61
|
}
|
|
61
62
|
if (refreshed.kind === 'advanced') {
|
|
@@ -69,7 +70,7 @@ async function refreshedRoom(runtime, room, local, authorized, held, live, hold,
|
|
|
69
70
|
const reached = now !== undefined && socket.reads.reached(room.locator, now, refreshed.record.roomVersion);
|
|
70
71
|
return reached ? null : 'behind';
|
|
71
72
|
}
|
|
72
|
-
await retainModel(runtime,
|
|
73
|
+
await retainModel(runtime, room.locator, declared(room), null);
|
|
73
74
|
return null;
|
|
74
75
|
}
|
|
75
76
|
return refreshed.kind === 'beyond-horizon' ? 'beyond-horizon' : refreshed;
|
|
@@ -78,25 +79,29 @@ export function advanced(runtime, room, local, authorized) {
|
|
|
78
79
|
return runtime.socket.lanes.inRoom(room.locator, (live) => advance(runtime, room, local, authorized, live));
|
|
79
80
|
}
|
|
80
81
|
export async function withhold(runtime, withheld, room, local, progress) {
|
|
81
|
-
const {
|
|
82
|
-
|
|
83
|
-
if (withheld.kind === 'unconfirmed' || store.fences.has(room.locator))
|
|
82
|
+
const { presence, journal } = runtime;
|
|
83
|
+
if (withheld.kind === 'unconfirmed' || presence.lost(room.locator))
|
|
84
84
|
return;
|
|
85
85
|
if (withheld.kind === 'not-ready') {
|
|
86
86
|
progress.complete = false;
|
|
87
87
|
askAgain(runtime, room.locator);
|
|
88
88
|
return;
|
|
89
89
|
}
|
|
90
|
-
|
|
90
|
+
if (withheld.kind === 'transport-uncertainty') {
|
|
91
|
+
runtime.retries.uncertain('download', room.locator, withheld);
|
|
92
|
+
}
|
|
93
|
+
else if (withheld.kind === 'retryable-refusal') {
|
|
94
|
+
runtime.retries.failed('download', room.locator, refusalError(withheld));
|
|
95
|
+
}
|
|
91
96
|
if (withheld.kind === 'transport-uncertainty' || withheld.kind === 'retryable-refusal') {
|
|
92
97
|
const reset = withheld.kind === 'retryable-refusal' ? withheld.reset : undefined;
|
|
93
|
-
|
|
98
|
+
presence.stood(room.locator, true, { reset });
|
|
94
99
|
repairLater(runtime, room.locator, reset === undefined ? { again: true } : { at: Date.parse(reset) });
|
|
95
100
|
}
|
|
96
101
|
else
|
|
97
|
-
|
|
102
|
+
presence.stood(room.locator, true, null);
|
|
98
103
|
if (withheld.kind === 'scoped-refusal') {
|
|
99
|
-
await scoped(runtime, withheld, room,
|
|
104
|
+
await scoped(runtime, withheld, room.locator, declared(room));
|
|
100
105
|
}
|
|
101
106
|
else if (withheld.kind === 'transport-uncertainty') {
|
|
102
107
|
progress.reachable = false;
|
|
@@ -105,16 +110,16 @@ export async function withhold(runtime, withheld, room, local, progress) {
|
|
|
105
110
|
journal.record(`refusal ${withheld.kind} ${withheld.code}`);
|
|
106
111
|
}
|
|
107
112
|
else if (withheld.kind === 'room-not-readable') {
|
|
108
|
-
roomUnreadable(runtime, room);
|
|
113
|
+
roomUnreadable(runtime, room.locator);
|
|
109
114
|
}
|
|
110
115
|
else if (withheld.kind === 'revoked-authorization') {
|
|
111
116
|
await refuse(runtime, 'revoked-authorization');
|
|
112
117
|
}
|
|
113
118
|
}
|
|
114
119
|
function askAgain(runtime, locator) {
|
|
115
|
-
const { store, socket } = runtime;
|
|
116
|
-
|
|
117
|
-
const room =
|
|
120
|
+
const { store, socket, presence } = runtime;
|
|
121
|
+
presence.askAgain(locator, () => {
|
|
122
|
+
const room = presence.room(locator);
|
|
118
123
|
if (socket.closed() ||
|
|
119
124
|
socket.stopping() ||
|
|
120
125
|
(socket.streamed && !socket.isOpen()) ||
|
|
@@ -127,50 +132,47 @@ function askAgain(runtime, locator) {
|
|
|
127
132
|
.then(() => rest(runtime, progress), () => undefined);
|
|
128
133
|
});
|
|
129
134
|
}
|
|
130
|
-
async function prepareRoom(runtime, room,
|
|
135
|
+
async function prepareRoom(runtime, room, progress, prior) {
|
|
131
136
|
const { socket, journal } = runtime;
|
|
132
137
|
const { session } = socket;
|
|
133
138
|
if (socket.closed() || session.now().authorization === undefined) {
|
|
134
139
|
progress.complete = false;
|
|
135
140
|
return false;
|
|
136
141
|
}
|
|
137
|
-
if (prior !== undefined && prior.replica.selection !== room.replica.selection) {
|
|
138
|
-
listHeld(runtime, room.locator);
|
|
142
|
+
if (prior !== undefined && prior.declaration.replica.selection !== room.replica.selection) {
|
|
139
143
|
emitRooms(runtime);
|
|
140
144
|
journal.record(`selection changed ${room.locator}`);
|
|
141
145
|
progress.complete = false;
|
|
142
146
|
return false;
|
|
143
147
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
if (prior !== undefined && (prior.name !== room.name || prior.handle !== room.handle)) {
|
|
148
|
-
await keepNaming(runtime, local, room);
|
|
148
|
+
const declaration = declared(room);
|
|
149
|
+
if (prior !== undefined && !sameDeclaration(prior.declaration, declaration)) {
|
|
150
|
+
await retainModel(runtime, room.locator, declaration, null);
|
|
149
151
|
}
|
|
150
152
|
const { paused, authorization } = session.now();
|
|
151
153
|
if (paused || authorization === undefined)
|
|
152
154
|
return false;
|
|
153
155
|
return room.replica.admission === 'admitted';
|
|
154
156
|
}
|
|
155
|
-
|
|
157
|
+
async function synchronize(runtime, listed, local, progress, attempt, live) {
|
|
156
158
|
const { store, socket } = runtime;
|
|
157
159
|
const heldNow = await store.rooms(listed.map(({ locator }) => locator));
|
|
158
|
-
const prepared = await Promise.allSettled(listed.map((room) => prepareRoom(runtime, room,
|
|
160
|
+
const prepared = await Promise.allSettled(listed.map((room) => prepareRoom(runtime, room, progress, heldNow.get(room.locator)?.record)));
|
|
159
161
|
if (!live())
|
|
160
162
|
return;
|
|
161
163
|
const ready = listed.filter((_, index) => {
|
|
162
164
|
const outcome = prepared[index];
|
|
163
|
-
return outcome
|
|
165
|
+
return outcome.status === 'fulfilled' && outcome.value;
|
|
164
166
|
});
|
|
165
|
-
const held = await heldRooms(runtime, ready);
|
|
166
|
-
if (!live())
|
|
167
|
-
return;
|
|
168
167
|
if (attempt === 'opened') {
|
|
168
|
+
const held = await heldRooms(runtime, ready);
|
|
169
|
+
if (!live())
|
|
170
|
+
return;
|
|
169
171
|
socket.hand(held);
|
|
170
172
|
}
|
|
171
|
-
const kept = attempt === '
|
|
172
|
-
? new Set()
|
|
173
|
-
: new Set(
|
|
173
|
+
const kept = attempt === 'authorized'
|
|
174
|
+
? new Set((await store.rooms(ready.map(({ locator }) => locator))).keys())
|
|
175
|
+
: new Set();
|
|
174
176
|
for (const room of ready) {
|
|
175
177
|
if (attempt === 'opened' || kept.has(room.locator)) {
|
|
176
178
|
if (attempt === 'authorized')
|
|
@@ -203,7 +205,7 @@ export async function loadRoom(runtime, room, local, progress, live, unheld) {
|
|
|
203
205
|
return;
|
|
204
206
|
const prior = unheld === undefined ? await store.record(room.locator) : undefined;
|
|
205
207
|
if (prior !== undefined) {
|
|
206
|
-
if (!(await prepareRoom(runtime, room,
|
|
208
|
+
if (!(await prepareRoom(runtime, room, progress, prior)))
|
|
207
209
|
return;
|
|
208
210
|
if (revoked(prior.model)) {
|
|
209
211
|
await reload(runtime, room, local, progress, live);
|
|
@@ -218,10 +220,10 @@ export async function loadRoom(runtime, room, local, progress, live, unheld) {
|
|
|
218
220
|
await caughtUp(runtime, room, local, progress, live);
|
|
219
221
|
}
|
|
220
222
|
export async function reload(runtime, room, local, progress, live) {
|
|
221
|
-
const { store, socket } = runtime;
|
|
223
|
+
const { store, socket, presence } = runtime;
|
|
222
224
|
try {
|
|
223
225
|
if (live())
|
|
224
|
-
|
|
226
|
+
presence.reload(room.locator, false);
|
|
225
227
|
const { authorization } = socket.session.now();
|
|
226
228
|
if (!live() || authorization === undefined)
|
|
227
229
|
return;
|
|
@@ -241,24 +243,23 @@ export async function reload(runtime, room, local, progress, live) {
|
|
|
241
243
|
}
|
|
242
244
|
}
|
|
243
245
|
function repairLater(runtime, locator, when) {
|
|
244
|
-
const { socket, recovery } = runtime;
|
|
245
|
-
if (!socket.isOpen() ||
|
|
246
|
+
const { socket, presence, recovery } = runtime;
|
|
247
|
+
if (!socket.isOpen() || presence.standing(locator).repairing)
|
|
246
248
|
return;
|
|
247
249
|
void recovery.attempt(`repair ${locator}`, (signal) => repairPass(runtime, locator, signal), when);
|
|
248
250
|
}
|
|
249
251
|
async function repairPass(runtime, locator, signal) {
|
|
250
|
-
const { store, socket } = runtime;
|
|
251
|
-
const
|
|
252
|
-
const room = rooms.discovered(locator);
|
|
252
|
+
const { store, socket, presence } = runtime;
|
|
253
|
+
const room = presence.room(locator);
|
|
253
254
|
if (!socket.isOpen() ||
|
|
254
255
|
!socket.continuing() ||
|
|
255
256
|
socket.stopping() ||
|
|
256
|
-
!
|
|
257
|
+
!presence.standing(locator).stale)
|
|
257
258
|
return 'done';
|
|
258
259
|
if (room === undefined || room.replica.admission !== 'admitted')
|
|
259
260
|
return 'done';
|
|
260
261
|
const progress = { complete: true, reachable: true };
|
|
261
|
-
|
|
262
|
+
presence.repairing(locator, true);
|
|
262
263
|
try {
|
|
263
264
|
const local = await store.open();
|
|
264
265
|
await socket.lanes.roomTask(locator, async (live) => {
|
|
@@ -271,41 +272,39 @@ async function repairPass(runtime, locator, signal) {
|
|
|
271
272
|
});
|
|
272
273
|
}
|
|
273
274
|
catch {
|
|
274
|
-
|
|
275
|
+
presence.stood(locator, true);
|
|
275
276
|
progress.reachable = false;
|
|
276
277
|
}
|
|
277
278
|
finally {
|
|
278
|
-
|
|
279
|
+
presence.repairing(locator, false);
|
|
279
280
|
}
|
|
280
281
|
if (signal.aborted)
|
|
281
282
|
return 'done';
|
|
282
283
|
await rest(runtime, progress);
|
|
283
|
-
if (!
|
|
284
|
-
|
|
285
|
-
submitLater(runtime, locator);
|
|
284
|
+
if (!presence.standing(locator).stale) {
|
|
285
|
+
await submissionDue(runtime, [locator]);
|
|
286
286
|
return 'done';
|
|
287
287
|
}
|
|
288
|
-
const { repairable } =
|
|
288
|
+
const { repairable } = presence.standing(locator);
|
|
289
289
|
if (repairable === null)
|
|
290
290
|
return 'done';
|
|
291
291
|
return repairable.reset === undefined ? 'again' : { at: Date.parse(repairable.reset) };
|
|
292
292
|
}
|
|
293
293
|
export async function finishOpening(runtime, progress, live) {
|
|
294
|
-
const { socket, conversations, recovery } = runtime;
|
|
294
|
+
const { socket, presence, conversations, recovery } = runtime;
|
|
295
295
|
try {
|
|
296
296
|
if (!live()) {
|
|
297
297
|
progress.complete = false;
|
|
298
298
|
return;
|
|
299
299
|
}
|
|
300
|
-
await
|
|
301
|
-
for (const locator of
|
|
300
|
+
await submissionDue(runtime);
|
|
301
|
+
for (const locator of presence.repairsOwed())
|
|
302
302
|
repairLater(runtime, locator, {});
|
|
303
|
-
|
|
304
|
-
await conversations.reconcile();
|
|
303
|
+
await reconcileConversations(conversations);
|
|
305
304
|
const reading = { complete: true, reachable: true };
|
|
306
|
-
await conversations
|
|
305
|
+
await catchUpConversations(conversations, reading);
|
|
307
306
|
if (progress.reachable && reading.reachable)
|
|
308
|
-
await conversations
|
|
307
|
+
await resendConversations(conversations, reading);
|
|
309
308
|
if (progress.reachable) {
|
|
310
309
|
void recovery.attempt('calls', (signal) => resendCalls(runtime, signal));
|
|
311
310
|
}
|
|
@@ -313,8 +312,10 @@ export async function finishOpening(runtime, progress, live) {
|
|
|
313
312
|
progress.reachable = false;
|
|
314
313
|
resendLater(runtime);
|
|
315
314
|
}
|
|
315
|
+
runtime.retries.succeeded('conversations', FINISHING);
|
|
316
316
|
}
|
|
317
|
-
catch {
|
|
317
|
+
catch (error) {
|
|
318
|
+
runtime.retries.failed('conversations', FINISHING, error);
|
|
318
319
|
progress.complete = false;
|
|
319
320
|
}
|
|
320
321
|
finally {
|
|
@@ -350,8 +351,10 @@ export function sync(runtime, attempt, found) {
|
|
|
350
351
|
const listed = await discoverRooms(runtime, local, progress, live, found);
|
|
351
352
|
if (listed !== null)
|
|
352
353
|
await synchronize(runtime, listed, local, progress, attempt, live);
|
|
354
|
+
runtime.retries.succeeded('connection', OPENING_LANE);
|
|
353
355
|
}
|
|
354
|
-
catch {
|
|
356
|
+
catch (error) {
|
|
357
|
+
runtime.retries.failed('connection', OPENING_LANE, error);
|
|
355
358
|
progress.complete = false;
|
|
356
359
|
if (attempt === 'opened' && !socket.isHanded())
|
|
357
360
|
progress.reachable = false;
|
|
@@ -372,7 +375,7 @@ export function sync(runtime, attempt, found) {
|
|
|
372
375
|
});
|
|
373
376
|
}
|
|
374
377
|
export function resynchronize(runtime) {
|
|
375
|
-
const { store, socket } = runtime;
|
|
378
|
+
const { store, socket, presence } = runtime;
|
|
376
379
|
return socket.lanes.task(OPENING_LANE, async (live) => {
|
|
377
380
|
if (!live() || !socket.isAnnounced())
|
|
378
381
|
return;
|
|
@@ -382,9 +385,11 @@ export function resynchronize(runtime) {
|
|
|
382
385
|
const local = await store.open();
|
|
383
386
|
if (!live())
|
|
384
387
|
return;
|
|
385
|
-
await synchronize(runtime,
|
|
388
|
+
await synchronize(runtime, presence.rooms(), local, progress, 'unstreamed', live);
|
|
389
|
+
runtime.retries.succeeded('download', OPENING_LANE);
|
|
386
390
|
}
|
|
387
|
-
catch {
|
|
391
|
+
catch (error) {
|
|
392
|
+
runtime.retries.failed('download', OPENING_LANE, error);
|
|
388
393
|
progress.complete = false;
|
|
389
394
|
}
|
|
390
395
|
if (live())
|
|
@@ -422,8 +427,10 @@ export function changeAuthority(runtime, change) {
|
|
|
422
427
|
session.set({ discoveries });
|
|
423
428
|
const listed = await applyDiscovery(runtime, change.rooms, discoveries, change.left);
|
|
424
429
|
await synchronize(runtime, listed, local, progress, 'authorized', live);
|
|
430
|
+
runtime.retries.succeeded('connection', OPENING_LANE);
|
|
425
431
|
}
|
|
426
|
-
catch {
|
|
432
|
+
catch (error) {
|
|
433
|
+
runtime.retries.failed('connection', OPENING_LANE, error);
|
|
427
434
|
progress.complete = false;
|
|
428
435
|
}
|
|
429
436
|
if (!live())
|
|
@@ -468,8 +475,8 @@ async function installCarried(runtime, room, local, change, live, progress) {
|
|
|
468
475
|
await publish(runtime, local, room, bootstrapped.record, { kind: 'bootstrapped', refreshed: bootstrapped.refreshed, from }, live);
|
|
469
476
|
}
|
|
470
477
|
export function applyRoom(runtime, change) {
|
|
471
|
-
const { store, socket } = runtime;
|
|
472
|
-
const {
|
|
478
|
+
const { store, socket, presence } = runtime;
|
|
479
|
+
const { session } = socket;
|
|
473
480
|
const { locator } = change;
|
|
474
481
|
if (socket.stopping())
|
|
475
482
|
return Promise.resolve();
|
|
@@ -482,7 +489,7 @@ export function applyRoom(runtime, change) {
|
|
|
482
489
|
for (;;) {
|
|
483
490
|
if (!live())
|
|
484
491
|
return null;
|
|
485
|
-
const room =
|
|
492
|
+
const room = presence.room(locator);
|
|
486
493
|
if (room === undefined || room.replica.admission !== 'admitted')
|
|
487
494
|
return null;
|
|
488
495
|
const held = await store.record(locator);
|
|
@@ -492,7 +499,7 @@ export function applyRoom(runtime, change) {
|
|
|
492
499
|
await installCarried(runtime, room, local, change, live, progress);
|
|
493
500
|
return progress;
|
|
494
501
|
}
|
|
495
|
-
if (held.replica.selection !== room.replica.selection)
|
|
502
|
+
if (held.declaration.replica.selection !== room.replica.selection)
|
|
496
503
|
return null;
|
|
497
504
|
const at = held.roomVersion;
|
|
498
505
|
if (socket.reads.reached(locator, at, change.roomVersion))
|
|
@@ -513,17 +520,19 @@ export function applyRoom(runtime, change) {
|
|
|
513
520
|
remodelled: refreshed.remodelled,
|
|
514
521
|
};
|
|
515
522
|
if (await publish(runtime, local, room, refreshed.record, landing, writing)) {
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
523
|
+
presence.stood(locator, false);
|
|
524
|
+
const declaration = declared(room);
|
|
525
|
+
if (!sameDeclaration(held.declaration, declaration))
|
|
526
|
+
await retainModel(runtime, locator, declaration, null);
|
|
519
527
|
return progress;
|
|
520
528
|
}
|
|
521
529
|
}
|
|
522
530
|
}
|
|
523
|
-
catch {
|
|
524
|
-
|
|
531
|
+
catch (error) {
|
|
532
|
+
runtime.retries.failed('download', locator, error);
|
|
533
|
+
if (!presence.standing(locator).stale)
|
|
525
534
|
void name(runtime, locator);
|
|
526
|
-
|
|
535
|
+
presence.stood(locator, true);
|
|
527
536
|
return progress;
|
|
528
537
|
}
|
|
529
538
|
})
|
package/dist/tables.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { type QueryAnswer, type QueryRoom } from './compile.js';
|
|
2
2
|
import type { Composed } from './collection.js';
|
|
3
3
|
import type { UnsentWork } from './durability.js';
|
|
4
|
-
import type { JobMarker } from './job.js';
|
|
5
4
|
import { type ConversationWrite, type HeldConversation, type HeldRow, type MessageWindow } from './messages.js';
|
|
6
|
-
import type { Plan } from './query.js';
|
|
5
|
+
import type { GroupTotal, Plan } from './query.js';
|
|
7
6
|
import { type ReadAt } from './reads.js';
|
|
8
7
|
import { type ConversationTally, type RoomTally } from './tallies.js';
|
|
9
8
|
import { type Committed, type Covering, type HeldEntry, type HeldLocators, type HeldRoomRow, type HeldRoomWork, type ReplicaOpened, type Referrer, type Resumed, type RoomCommit, type StoredEntry, type TypedEntry, type View } from './stored.js';
|
|
@@ -53,7 +52,7 @@ export interface SqliteDatabase {
|
|
|
53
52
|
export declare function sqliteConnection(engine: SqliteEngine, database: SqliteDatabase): Connection;
|
|
54
53
|
export declare const FILE_PART_BYTES = 1048576;
|
|
55
54
|
export declare const RUNTIME_TABLES: readonly string[];
|
|
56
|
-
export type AuthoredFact = 'holder' | '
|
|
55
|
+
export type AuthoredFact = 'holder' | 'generation';
|
|
57
56
|
export type StoredFile = {
|
|
58
57
|
readonly key: string;
|
|
59
58
|
readonly blob: Blob;
|
|
@@ -116,6 +115,13 @@ export type OpenedFile = {
|
|
|
116
115
|
readonly byteLength: number;
|
|
117
116
|
readonly mediaType: string;
|
|
118
117
|
};
|
|
118
|
+
export type OpenedRoom = GroupTotal & {
|
|
119
|
+
readonly room: string;
|
|
120
|
+
};
|
|
121
|
+
export type OpenedHeld = {
|
|
122
|
+
readonly rooms: readonly OpenedRoom[];
|
|
123
|
+
readonly cleanable: number;
|
|
124
|
+
};
|
|
119
125
|
type Asked<A, R> = {
|
|
120
126
|
readonly asked: A;
|
|
121
127
|
readonly answer: R;
|
|
@@ -242,7 +248,6 @@ export interface RuntimeRequests {
|
|
|
242
248
|
}, readonly Referrer[]>;
|
|
243
249
|
readonly 'replica.folders': Asked<{
|
|
244
250
|
readonly key: number;
|
|
245
|
-
readonly view: View;
|
|
246
251
|
readonly paths: readonly string[];
|
|
247
252
|
}, readonly string[]>;
|
|
248
253
|
readonly 'replica.typedWithin': Asked<{
|
|
@@ -345,6 +350,7 @@ export interface RuntimeRequests {
|
|
|
345
350
|
readonly key: string;
|
|
346
351
|
}, null>;
|
|
347
352
|
readonly 'opened.clean': Asked<Nothing, number>;
|
|
353
|
+
readonly 'opened.held': Asked<Nothing, OpenedHeld>;
|
|
348
354
|
readonly 'file.part': Asked<{
|
|
349
355
|
readonly key: string;
|
|
350
356
|
readonly part: number;
|
|
@@ -370,9 +376,6 @@ export interface RuntimeRequests {
|
|
|
370
376
|
readonly 'conversation.rows': Asked<{
|
|
371
377
|
readonly conversations: readonly string[];
|
|
372
378
|
}, readonly HeldRow[]>;
|
|
373
|
-
readonly 'conversation.jobs': Asked<{
|
|
374
|
-
readonly conversation: string;
|
|
375
|
-
}, readonly JobMarker[]>;
|
|
376
379
|
readonly 'conversation.tallies': Asked<{
|
|
377
380
|
readonly conversations: readonly string[] | null;
|
|
378
381
|
readonly since: string;
|
|
@@ -402,6 +405,8 @@ export interface RuntimeDatabase {
|
|
|
402
405
|
export declare function isRuntime(request: {
|
|
403
406
|
readonly kind: string;
|
|
404
407
|
}): request is RuntimeRequest;
|
|
405
|
-
export declare function readsRuntime(request:
|
|
408
|
+
export declare function readsRuntime(request: {
|
|
409
|
+
readonly kind: string;
|
|
410
|
+
}): boolean;
|
|
406
411
|
export declare function answerRuntime(connection: Connection, request: RuntimeRequest, spool: FileSpool): unknown;
|
|
407
412
|
//# sourceMappingURL=tables.d.ts.map
|