@agentshouse/mdruntime 0.1.0-c95464765b116 → 0.1.0-c95f0f04f2113
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 +6 -0
- package/dist/acceptance.d.ts.map +1 -0
- package/dist/acceptance.js +389 -0
- package/dist/actions.d.ts +20 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +248 -0
- package/dist/adapter.d.ts +153 -84
- 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 +31 -11
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +319 -107
- 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 +9 -16
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +11 -88
- package/dist/change.d.ts +32 -1
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +10 -1
- package/dist/chat-types.d.ts +3 -0
- package/dist/chat-types.d.ts.map +1 -0
- package/dist/chat-types.js +2 -0
- package/dist/client.d.ts +32 -10
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +98 -11
- package/dist/collection.d.ts +11 -21
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +39 -291
- package/dist/compile.d.ts +16 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +717 -0
- package/dist/connection.d.ts +7 -129
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +97 -3344
- 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-row.d.ts +33 -0
- package/dist/conversation-row.d.ts.map +1 -0
- package/dist/conversation-row.js +47 -0
- package/dist/conversation.d.ts +43 -18
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +762 -299
- 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 +175 -0
- package/dist/durability.d.ts +7 -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 -28
- package/dist/figures.d.ts +48 -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/host.d.ts +7 -8
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +101 -24
- 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 +31 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/install.d.ts +56 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +560 -0
- package/dist/job.d.ts +33 -0
- package/dist/job.d.ts.map +1 -0
- package/dist/job.js +54 -0
- package/dist/lifecycle.d.ts +7 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +267 -0
- package/dist/listing.d.ts +53 -0
- package/dist/listing.d.ts.map +1 -0
- package/dist/listing.js +175 -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 +9 -0
- package/dist/locks.d.ts.map +1 -0
- package/dist/locks.js +61 -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 +61 -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 +19 -7
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +248 -103
- package/dist/messages.d.ts +52 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +168 -0
- package/dist/model.d.ts +11 -12
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +7 -19
- package/dist/models.d.ts +14 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +193 -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 +17 -2
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +100 -5
- 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 +56 -0
- package/dist/outcome.d.ts +46 -7
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +42 -0
- package/dist/overlay.d.ts +4 -5
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +106 -156
- package/dist/{chat/parts.d.ts → parts.d.ts} +11 -9
- package/dist/parts.d.ts.map +1 -0
- package/dist/{chat/parts.js → parts.js} +45 -46
- package/dist/paths.d.ts +1 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +4 -0
- package/dist/preparation.d.ts +20 -0
- package/dist/preparation.d.ts.map +1 -0
- package/dist/preparation.js +226 -0
- package/dist/queries.d.ts +16 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +272 -0
- package/dist/query.d.ts +27 -185
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -464
- package/dist/{chat/questions.d.ts → questions.d.ts} +3 -2
- package/dist/questions.d.ts.map +1 -0
- package/dist/{chat/questions.js → questions.js} +8 -1
- package/dist/reach.d.ts +19 -9
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +287 -99
- package/dist/react.d.ts +8 -4
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +7 -17
- 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 +14 -17
- package/dist/readiness.d.ts.map +1 -1
- package/dist/readiness.js +2 -8
- package/dist/reads.d.ts +36 -0
- package/dist/reads.d.ts.map +1 -0
- package/dist/reads.js +136 -0
- package/dist/recovery.d.ts +3 -2
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +43 -8
- package/dist/refresh.d.ts +17 -14
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +143 -52
- package/dist/refusal.d.ts +5 -0
- package/dist/refusal.d.ts.map +1 -0
- package/dist/refusal.js +56 -0
- package/dist/replica.d.ts +55 -33
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +331 -181
- package/dist/room-draft.d.ts +37 -6
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +161 -74
- package/dist/room-drafts.d.ts +24 -0
- package/dist/room-drafts.d.ts.map +1 -0
- package/dist/room-drafts.js +216 -0
- package/dist/rows.d.ts +31 -29
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +59 -116
- package/dist/runtime.d.ts +42 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +1 -0
- package/dist/save.d.ts +53 -14
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +534 -187
- package/dist/saves.d.ts +70 -0
- package/dist/saves.d.ts.map +1 -0
- package/dist/saves.js +1004 -0
- package/dist/search.d.ts +15 -77
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +10 -184
- package/dist/seed.d.ts +25 -0
- package/dist/seed.d.ts.map +1 -0
- package/dist/seed.js +146 -0
- package/dist/shared.d.ts +7 -3
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +119 -66
- package/dist/shown.d.ts +31 -0
- package/dist/shown.d.ts.map +1 -0
- package/dist/shown.js +294 -0
- package/dist/socket/admission.d.ts +7 -0
- package/dist/socket/admission.d.ts.map +1 -0
- package/dist/socket/admission.js +39 -0
- package/dist/socket/answers.d.ts +6 -0
- package/dist/socket/answers.d.ts.map +1 -0
- package/dist/socket/answers.js +20 -0
- package/dist/socket/lanes.d.ts +20 -0
- package/dist/socket/lanes.d.ts.map +1 -0
- package/dist/socket/lanes.js +77 -0
- package/dist/socket/reads.d.ts +10 -0
- package/dist/socket/reads.d.ts.map +1 -0
- package/dist/socket/reads.js +31 -0
- package/dist/socket/rooms.d.ts +43 -0
- package/dist/socket/rooms.d.ts.map +1 -0
- package/dist/socket/rooms.js +90 -0
- package/dist/socket/session.d.ts +39 -0
- package/dist/socket/session.d.ts.map +1 -0
- package/dist/socket/session.js +23 -0
- package/dist/socket.d.ts +70 -0
- package/dist/socket.d.ts.map +1 -0
- package/dist/socket.js +175 -0
- package/dist/source.d.ts +61 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +81 -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/fences.d.ts +16 -0
- package/dist/store/fences.d.ts.map +1 -0
- package/dist/store/fences.js +26 -0
- 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 +408 -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 +43 -0
- package/dist/store/watchers.d.ts +17 -0
- package/dist/store/watchers.d.ts.map +1 -0
- package/dist/store/watchers.js +57 -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 +106 -149
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +136 -712
- package/dist/stored.d.ts +156 -0
- package/dist/stored.d.ts.map +1 -0
- package/dist/stored.js +637 -0
- package/dist/surface.d.ts +86 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +217 -0
- package/dist/sync.d.ts +20 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +531 -0
- package/dist/tables.d.ts +407 -0
- package/dist/tables.d.ts.map +1 -0
- package/dist/tables.js +724 -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 +5 -3
- package/dist/turn.d.ts.map +1 -1
- package/dist/turn.js +51 -21
- package/dist/validation.d.ts +29 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +104 -0
- package/dist/windows.d.ts +11 -0
- package/dist/windows.d.ts.map +1 -0
- package/dist/windows.js +16 -0
- package/dist/wire.d.ts +49 -6
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +15 -2
- package/package.json +18 -19
- package/AGENTS.md +0 -300
- package/dist/acquisition.d.ts +0 -14
- package/dist/acquisition.d.ts.map +0 -1
- package/dist/acquisition.js +0 -24
- 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/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 -63
- package/dist/chat/markdown.d.ts +0 -20
- package/dist/chat/markdown.d.ts.map +0 -1
- package/dist/chat/markdown.js +0 -188
- 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 -155
- 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.map +0 -1
- 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 -620
- package/dist/chat/question.d.ts +0 -9
- package/dist/chat/question.d.ts.map +0 -1
- package/dist/chat/question.js +0 -80
- 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/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 -25
- package/dist/read-side.d.ts.map +0 -1
- package/dist/read-side.js +0 -639
package/dist/actions.js
ADDED
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { roomTarget, target } from '@agentshouse/mdmodel';
|
|
2
|
+
import { listingNow } from './listing.js';
|
|
3
|
+
import { locked, lockedRooms } from './locks.js';
|
|
4
|
+
import { scoped } from './models.js';
|
|
5
|
+
import { ABSENT_TARGET, calledResult, failure, historyAnswer, LOCKED_UNREADABLE, lockedRoom, undeclared, UNCERTAIN, UNREADABLE, } from './outcome.js';
|
|
6
|
+
import { refuse } from './refusal.js';
|
|
7
|
+
function operationOf(input) {
|
|
8
|
+
const operation = input?.operation_id;
|
|
9
|
+
return typeof operation === 'string' ? operation : null;
|
|
10
|
+
}
|
|
11
|
+
export async function readHistory(runtime, locator, path, query = {}) {
|
|
12
|
+
const { store, socket, journal } = runtime;
|
|
13
|
+
const { session } = socket;
|
|
14
|
+
if (socket.closed() || session.now().refusal !== null)
|
|
15
|
+
return UNCERTAIN;
|
|
16
|
+
await socket.firstDiscovery;
|
|
17
|
+
if (!session.now().roomsNamed)
|
|
18
|
+
return UNCERTAIN;
|
|
19
|
+
try {
|
|
20
|
+
await socket.authorize();
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return UNCERTAIN;
|
|
24
|
+
}
|
|
25
|
+
const { closed, authorization, refusal } = session.now();
|
|
26
|
+
if (closed || authorization === undefined || refusal !== null)
|
|
27
|
+
return UNCERTAIN;
|
|
28
|
+
const since = store.fences.count();
|
|
29
|
+
const transfer = ['transfer', 'history', locator, path];
|
|
30
|
+
if (query.revision !== undefined)
|
|
31
|
+
transfer.push(query.revision);
|
|
32
|
+
if (query.pageToken !== undefined)
|
|
33
|
+
transfer.push(query.pageToken);
|
|
34
|
+
journal.record(transfer.join(' '));
|
|
35
|
+
try {
|
|
36
|
+
const result = await socket.history(authorization, {
|
|
37
|
+
locator,
|
|
38
|
+
path,
|
|
39
|
+
...(query.revision === undefined ? {} : { revision: query.revision }),
|
|
40
|
+
...(query.pageToken === undefined ? {} : { pageToken: query.pageToken }),
|
|
41
|
+
});
|
|
42
|
+
journal.record(`outcome history ${result.kind}`);
|
|
43
|
+
if (store.fences.since(locator, since))
|
|
44
|
+
return failure({ kind: 'room-not-readable', locator });
|
|
45
|
+
if (result.kind === 'scoped-refusal') {
|
|
46
|
+
const room = await store.record(result.locator);
|
|
47
|
+
if (room !== undefined)
|
|
48
|
+
await scoped(runtime, result, room, await store.open());
|
|
49
|
+
}
|
|
50
|
+
if (result.kind === 'revoked-authorization')
|
|
51
|
+
await refuse(runtime, 'revoked-authorization');
|
|
52
|
+
return historyAnswer(result);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
journal.record('outcome history transport-uncertainty');
|
|
56
|
+
return UNCERTAIN;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export async function located(runtime, room, path, destination) {
|
|
60
|
+
const crossing = roomTarget(destination);
|
|
61
|
+
const listing = await listingNow(runtime);
|
|
62
|
+
if (crossing === null) {
|
|
63
|
+
const named = target(path, destination);
|
|
64
|
+
return named === null || !listing.has(room) ? null : { room, path: named };
|
|
65
|
+
}
|
|
66
|
+
const held = [...listing.values()].find((listed) => listed.handle === crossing.handle);
|
|
67
|
+
return held === undefined ? null : { room: held.locator, path: crossing.path };
|
|
68
|
+
}
|
|
69
|
+
export async function resolveReference(runtime, room, path, destination) {
|
|
70
|
+
const { store } = runtime;
|
|
71
|
+
if (roomTarget(destination) === null && target(path, destination) === null) {
|
|
72
|
+
return ABSENT_TARGET;
|
|
73
|
+
}
|
|
74
|
+
const at = await located(runtime, room, path, destination);
|
|
75
|
+
if (at === null)
|
|
76
|
+
return UNREADABLE;
|
|
77
|
+
if (await locked(runtime, at.room))
|
|
78
|
+
return LOCKED_UNREADABLE;
|
|
79
|
+
const held = await store.record(at.room);
|
|
80
|
+
if (held !== undefined &&
|
|
81
|
+
(await (await store.open()).entries(held.key, 'visible', [at.path])).length > 0) {
|
|
82
|
+
return { kind: 'document', ...at };
|
|
83
|
+
}
|
|
84
|
+
const history = await readHistory(runtime, at.room, at.path);
|
|
85
|
+
if (history.kind === 'no-history' || history.kind === 'revision')
|
|
86
|
+
return ABSENT_TARGET;
|
|
87
|
+
if (history.kind !== 'history')
|
|
88
|
+
return history;
|
|
89
|
+
const [last] = history.revisions;
|
|
90
|
+
if (last === undefined)
|
|
91
|
+
return ABSENT_TARGET;
|
|
92
|
+
return history.deleted === true
|
|
93
|
+
? { kind: 'deleted', ...at, revision: last }
|
|
94
|
+
: { kind: 'document', ...at };
|
|
95
|
+
}
|
|
96
|
+
async function declaredAction({ store }, name) {
|
|
97
|
+
for (const capability of (await (await store.open()).facts()).capabilities) {
|
|
98
|
+
for (const action of capability.actions ?? []) {
|
|
99
|
+
if (action.name === name)
|
|
100
|
+
return action;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
async function calledRooms(runtime, name, input) {
|
|
106
|
+
const member = (await declaredAction(runtime, name))?.room;
|
|
107
|
+
if (member === undefined || input === null || typeof input !== 'object')
|
|
108
|
+
return [];
|
|
109
|
+
const named = input[member];
|
|
110
|
+
return (Array.isArray(named) ? named : [named]).filter((room) => typeof room === 'string');
|
|
111
|
+
}
|
|
112
|
+
export async function invokeAction(runtime, name, input, dispatching) {
|
|
113
|
+
const { store, socket, journal } = runtime;
|
|
114
|
+
const { session } = socket;
|
|
115
|
+
await socket.ready;
|
|
116
|
+
if (socket.closed() || session.now().refusal !== null)
|
|
117
|
+
return UNCERTAIN;
|
|
118
|
+
if ((await declaredAction(runtime, name)) === undefined)
|
|
119
|
+
return undeclared(name);
|
|
120
|
+
try {
|
|
121
|
+
await socket.authorize();
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
return UNCERTAIN;
|
|
125
|
+
}
|
|
126
|
+
const { closed, authorization, refusal } = session.now();
|
|
127
|
+
if (closed || authorization === undefined || refusal !== null)
|
|
128
|
+
return UNCERTAIN;
|
|
129
|
+
await dispatching?.();
|
|
130
|
+
journal.record(`transfer action ${name}`);
|
|
131
|
+
try {
|
|
132
|
+
const result = await socket.action(authorization, { name, input });
|
|
133
|
+
if (result.kind === 'scoped-refusal') {
|
|
134
|
+
const room = await store.record(result.locator);
|
|
135
|
+
if (room !== undefined)
|
|
136
|
+
await scoped(runtime, result, room, await store.open());
|
|
137
|
+
}
|
|
138
|
+
if (result.kind === 'revoked-authorization')
|
|
139
|
+
await refuse(runtime, 'revoked-authorization');
|
|
140
|
+
journal.record(`outcome action ${result.kind}`);
|
|
141
|
+
if (result.kind === 'rejected')
|
|
142
|
+
journal.record(`refusal rejected ${result.code}`);
|
|
143
|
+
return calledResult(result);
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
journal.record('outcome action transport-uncertainty');
|
|
147
|
+
return UNCERTAIN;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
export async function readConversationHistory(runtime, request) {
|
|
151
|
+
const { socket, journal } = runtime;
|
|
152
|
+
await socket.ready;
|
|
153
|
+
const stream = socket.conversations();
|
|
154
|
+
if (socket.closed() || socket.session.now().refusal !== null || stream?.history === undefined) {
|
|
155
|
+
return UNCERTAIN;
|
|
156
|
+
}
|
|
157
|
+
journal.record('transfer conversation history');
|
|
158
|
+
try {
|
|
159
|
+
const result = await stream.history(request);
|
|
160
|
+
if (result.kind === 'revoked-authorization')
|
|
161
|
+
await refuse(runtime, 'revoked-authorization');
|
|
162
|
+
journal.record(`outcome conversation history ${result.kind}`);
|
|
163
|
+
return calledResult(result);
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
journal.record('outcome conversation history transport-uncertainty');
|
|
167
|
+
return UNCERTAIN;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function unsettled(result) {
|
|
171
|
+
return result.kind !== 'action' && result.retryable;
|
|
172
|
+
}
|
|
173
|
+
async function recoveredAction(runtime, name, input) {
|
|
174
|
+
const { store, socket, recovery } = runtime;
|
|
175
|
+
const { lanes } = socket;
|
|
176
|
+
const operation = operationOf(input);
|
|
177
|
+
if (operation === null)
|
|
178
|
+
return invokeAction(runtime, name, input);
|
|
179
|
+
const kept = async () => (await store.open()).keepCall({ operation, name, input });
|
|
180
|
+
lanes.call(operation);
|
|
181
|
+
try {
|
|
182
|
+
let result = await invokeAction(runtime, name, input, kept);
|
|
183
|
+
if (unsettled(result)) {
|
|
184
|
+
await recovery.attempt(`action ${operation}`, async () => {
|
|
185
|
+
if (socket.closed() || socket.session.now().refusal !== null)
|
|
186
|
+
return 'done';
|
|
187
|
+
if (!socket.isOpen())
|
|
188
|
+
return 'again';
|
|
189
|
+
result = await invokeAction(runtime, name, input, kept);
|
|
190
|
+
return unsettled(result) ? 'again' : 'done';
|
|
191
|
+
}, { again: true });
|
|
192
|
+
}
|
|
193
|
+
if (!unsettled(result))
|
|
194
|
+
await (await store.open()).dropCall(operation);
|
|
195
|
+
return result;
|
|
196
|
+
}
|
|
197
|
+
finally {
|
|
198
|
+
lanes.called(operation);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
export async function called(runtime, name, input) {
|
|
202
|
+
await runtime.socket.ready;
|
|
203
|
+
const lockedNow = await lockedRooms(runtime);
|
|
204
|
+
const room = (await calledRooms(runtime, name, input)).find((one) => lockedNow.includes(one));
|
|
205
|
+
return room === undefined ? recoveredAction(runtime, name, input) : lockedRoom(room);
|
|
206
|
+
}
|
|
207
|
+
export async function resendCalls(runtime, signal) {
|
|
208
|
+
const { store, socket } = runtime;
|
|
209
|
+
const { lanes } = socket;
|
|
210
|
+
if (!socket.isOpen() || socket.closed() || socket.stopping())
|
|
211
|
+
return 'done';
|
|
212
|
+
const local = await store.open();
|
|
213
|
+
for (const held of await local.calls()) {
|
|
214
|
+
if (lanes.calling(held.operation))
|
|
215
|
+
continue;
|
|
216
|
+
if (socket.closed() || signal.aborted)
|
|
217
|
+
return 'done';
|
|
218
|
+
lanes.call(held.operation);
|
|
219
|
+
try {
|
|
220
|
+
if (unsettled(await invokeAction(runtime, held.name, held.input)))
|
|
221
|
+
return 'again';
|
|
222
|
+
await local.dropCall(held.operation);
|
|
223
|
+
}
|
|
224
|
+
finally {
|
|
225
|
+
lanes.called(held.operation);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return 'done';
|
|
229
|
+
}
|
|
230
|
+
async function resendPass({ socket, conversations }, signal) {
|
|
231
|
+
if (!socket.continuing() || !socket.isOpen() || socket.stopping())
|
|
232
|
+
return 'done';
|
|
233
|
+
const reading = { complete: true, reachable: true };
|
|
234
|
+
try {
|
|
235
|
+
await conversations.resend(reading);
|
|
236
|
+
}
|
|
237
|
+
catch {
|
|
238
|
+
reading.reachable = false;
|
|
239
|
+
}
|
|
240
|
+
if (signal.aborted)
|
|
241
|
+
return 'done';
|
|
242
|
+
return reading.reachable && reading.complete ? 'done' : 'again';
|
|
243
|
+
}
|
|
244
|
+
export function resendLater(runtime) {
|
|
245
|
+
if (!runtime.socket.isOpen())
|
|
246
|
+
return;
|
|
247
|
+
void runtime.recovery.attempt('resend', (signal) => resendPass(runtime, signal), { again: true });
|
|
248
|
+
}
|
package/dist/adapter.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import type { SavedFacts, TypedPath } from '@agentshouse/mdmodel';
|
|
1
2
|
import type { ModelResult } from './model.js';
|
|
3
|
+
export type { SavedFacts, TypedPath };
|
|
2
4
|
import type { Open } from './open.js';
|
|
3
5
|
import type { ChangeBatch } from './change.js';
|
|
4
6
|
export type Authorization = object;
|
|
@@ -10,14 +12,13 @@ export type TypedSelection = {
|
|
|
10
12
|
roots: readonly string[];
|
|
11
13
|
};
|
|
12
14
|
export type OperationScopes = {
|
|
13
|
-
read: readonly string[];
|
|
14
|
-
sync: readonly string[];
|
|
15
15
|
write: readonly string[];
|
|
16
|
-
|
|
16
|
+
erase: readonly string[];
|
|
17
17
|
};
|
|
18
18
|
export type ReplicaAdmission = {
|
|
19
19
|
selection: string;
|
|
20
20
|
admission: Open<'admitted' | 'unavailable'>;
|
|
21
|
+
offline: Open<'locked' | 'open'>;
|
|
21
22
|
};
|
|
22
23
|
export type DiscoveredRoom = {
|
|
23
24
|
name: string;
|
|
@@ -33,24 +34,21 @@ export type Capability = {
|
|
|
33
34
|
name: string;
|
|
34
35
|
limits?: readonly ProviderLimit[];
|
|
35
36
|
actions?: readonly ActionDeclaration[];
|
|
36
|
-
conversationAgents?: ConversationAgents;
|
|
37
|
-
};
|
|
38
|
-
export type ConversationAgents = {
|
|
39
|
-
locator: string;
|
|
40
|
-
type: string;
|
|
41
|
-
identity: string;
|
|
42
|
-
name: string;
|
|
43
|
-
retired?: string;
|
|
44
37
|
};
|
|
45
38
|
export type ListedConversation = {
|
|
46
39
|
conversation: string;
|
|
47
40
|
agent: string;
|
|
41
|
+
agentName: string;
|
|
42
|
+
agentRetired: boolean;
|
|
48
43
|
name: string;
|
|
49
44
|
created: string;
|
|
50
45
|
finished: string | null;
|
|
51
46
|
outcome: string | null;
|
|
47
|
+
waiting: boolean;
|
|
48
|
+
newest: string | null;
|
|
49
|
+
processEnded: string | null;
|
|
52
50
|
};
|
|
53
|
-
export type ConversationAction = '
|
|
51
|
+
export type ConversationAction = 'conversations/create' | 'conversations/send' | 'conversations/interaction/answer' | 'conversations/interrupt' | 'conversations/kill' | 'conversations/delete';
|
|
54
52
|
export type ConversationMessage = {
|
|
55
53
|
identity: string;
|
|
56
54
|
turn: string;
|
|
@@ -141,6 +139,10 @@ export type SessionOption = (SessionOptionNaming & {
|
|
|
141
139
|
type: 'boolean';
|
|
142
140
|
currentValue: boolean;
|
|
143
141
|
});
|
|
142
|
+
export type RunningSubagent = {
|
|
143
|
+
description: string;
|
|
144
|
+
activity: string | null;
|
|
145
|
+
};
|
|
144
146
|
export type ConversationEvent = {
|
|
145
147
|
kind: 'turn';
|
|
146
148
|
conversation: string;
|
|
@@ -162,6 +164,22 @@ export type ConversationEvent = {
|
|
|
162
164
|
kind: 'options';
|
|
163
165
|
conversation: string;
|
|
164
166
|
options: readonly SessionOption[];
|
|
167
|
+
} | {
|
|
168
|
+
kind: 'starting';
|
|
169
|
+
conversation: string;
|
|
170
|
+
step: string | null;
|
|
171
|
+
} | {
|
|
172
|
+
kind: 'subagents';
|
|
173
|
+
conversation: string;
|
|
174
|
+
subagents: readonly RunningSubagent[];
|
|
175
|
+
} | {
|
|
176
|
+
kind: 'link';
|
|
177
|
+
conversation: string;
|
|
178
|
+
connected: boolean;
|
|
179
|
+
} | {
|
|
180
|
+
kind: 'deliveries';
|
|
181
|
+
conversation: string;
|
|
182
|
+
unknown: readonly string[];
|
|
165
183
|
} | {
|
|
166
184
|
kind: 'accepted-message';
|
|
167
185
|
conversation: string;
|
|
@@ -172,6 +190,9 @@ export type ConversationEvent = {
|
|
|
172
190
|
} | {
|
|
173
191
|
kind: 'list';
|
|
174
192
|
entries: readonly ListedConversation[];
|
|
193
|
+
whole: boolean;
|
|
194
|
+
more: boolean;
|
|
195
|
+
cursor: string | null;
|
|
175
196
|
} | {
|
|
176
197
|
kind: 'listed';
|
|
177
198
|
entry: ListedConversation;
|
|
@@ -179,14 +200,23 @@ export type ConversationEvent = {
|
|
|
179
200
|
kind: 'unlisted';
|
|
180
201
|
conversation: string;
|
|
181
202
|
};
|
|
203
|
+
export type ListedAgent = {
|
|
204
|
+
agent: string;
|
|
205
|
+
name: string;
|
|
206
|
+
retired: boolean;
|
|
207
|
+
};
|
|
182
208
|
export type ConversationStream = {
|
|
183
209
|
replicate(conversations: readonly string[]): void;
|
|
210
|
+
hold(cursor: string | null): void;
|
|
184
211
|
observe(notify: (event: ConversationEvent) => void): () => void;
|
|
212
|
+
agents?(): Promise<readonly ListedAgent[] | null>;
|
|
213
|
+
history?(request: ConversationHistoryRequest): Promise<ActionResult>;
|
|
185
214
|
};
|
|
186
215
|
export type ActionDeclaration = {
|
|
187
216
|
name: string;
|
|
188
217
|
inputShape: unknown;
|
|
189
218
|
resultKind: unknown;
|
|
219
|
+
room?: string;
|
|
190
220
|
};
|
|
191
221
|
export type ProviderLimit = {
|
|
192
222
|
name: string;
|
|
@@ -200,7 +230,6 @@ export type HistoryRetention = {
|
|
|
200
230
|
};
|
|
201
231
|
export type Retention = {
|
|
202
232
|
history: HistoryRetention;
|
|
203
|
-
outcome: number;
|
|
204
233
|
refreshHorizon: number;
|
|
205
234
|
};
|
|
206
235
|
export type Discovery = {
|
|
@@ -229,7 +258,7 @@ export type ProviderRefusal = {
|
|
|
229
258
|
export type ScopedRefusal = ProviderRefusal & {
|
|
230
259
|
kind: 'scoped-refusal';
|
|
231
260
|
locator: string;
|
|
232
|
-
scope: Open<'content' | '
|
|
261
|
+
scope: Open<'content' | 'model' | 'operation' | 'undisclosed'>;
|
|
233
262
|
};
|
|
234
263
|
export type AdapterFailure = TransportUncertainty | RoomNotReadable | RevokedAuthorization | ScopedRefusal;
|
|
235
264
|
export type ContractUnavailable = ProviderRefusal & {
|
|
@@ -238,54 +267,63 @@ export type ContractUnavailable = ProviderRefusal & {
|
|
|
238
267
|
export type DiscoverResult = Discovery | TransportUncertainty | RevokedAuthorization | ContractUnavailable;
|
|
239
268
|
export type PageToken = string;
|
|
240
269
|
export type ChangeAuthor = {
|
|
241
|
-
kind: 'user'
|
|
270
|
+
kind: Open<'user' | 'site' | 'inbox' | 'app'>;
|
|
242
271
|
id: string;
|
|
243
272
|
name: string;
|
|
244
|
-
}
|
|
245
|
-
|
|
273
|
+
};
|
|
274
|
+
export type Member = {
|
|
275
|
+
kind: Open<'user'>;
|
|
246
276
|
id: string;
|
|
247
277
|
name: string;
|
|
248
278
|
};
|
|
249
|
-
export type Member = Extract<ChangeAuthor, {
|
|
250
|
-
kind: 'user';
|
|
251
|
-
}>;
|
|
252
279
|
export type HeadChange = {
|
|
253
280
|
author: ChangeAuthor | null;
|
|
254
281
|
time: string;
|
|
255
282
|
};
|
|
256
283
|
export type BinaryFile = {
|
|
257
|
-
fileRef: string;
|
|
258
284
|
byteLength: number;
|
|
259
285
|
mediaType: string;
|
|
260
286
|
sha256: string;
|
|
261
287
|
};
|
|
262
|
-
export type HeldContent = {
|
|
263
|
-
documents: Readonly<Record<string, string>>;
|
|
264
|
-
revisions: Readonly<Record<string, string>>;
|
|
265
|
-
};
|
|
266
288
|
export type BootstrapRequest = {
|
|
267
289
|
locator: string;
|
|
268
290
|
selection: string;
|
|
269
291
|
pageToken?: PageToken;
|
|
270
|
-
|
|
292
|
+
arriving?: (bytes: number) => void;
|
|
293
|
+
signal?: AbortSignal;
|
|
294
|
+
};
|
|
295
|
+
export type BootstrapPart = {
|
|
296
|
+
readonly id: string;
|
|
297
|
+
readonly bytes: number;
|
|
298
|
+
};
|
|
299
|
+
export type BootstrapInventory = {
|
|
300
|
+
readonly bytes: number;
|
|
271
301
|
};
|
|
272
302
|
export type RoomModels = {
|
|
273
303
|
collection?: ModelResult;
|
|
274
|
-
selection?: ModelResult;
|
|
275
304
|
};
|
|
276
305
|
export type BootstrapPage = {
|
|
277
306
|
kind: 'bootstrap';
|
|
278
307
|
roomVersion: string;
|
|
279
308
|
models?: RoomModels;
|
|
280
309
|
documents: Readonly<Record<string, string>>;
|
|
310
|
+
facts: Readonly<Record<string, SavedFacts>>;
|
|
281
311
|
revisions: Readonly<Record<string, string>>;
|
|
312
|
+
fileIds?: Readonly<Record<string, string>>;
|
|
313
|
+
created?: Readonly<Record<string, string>>;
|
|
282
314
|
changes: Readonly<Record<string, HeadChange>>;
|
|
283
315
|
binaryFiles: Readonly<Record<string, BinaryFile>>;
|
|
316
|
+
folders?: readonly string[];
|
|
284
317
|
pageToken?: PageToken;
|
|
318
|
+
parts?: readonly BootstrapPart[];
|
|
319
|
+
bytes?: number;
|
|
320
|
+
};
|
|
321
|
+
export type NotReady = {
|
|
322
|
+
kind: 'not-ready';
|
|
285
323
|
};
|
|
286
324
|
export type BootstrapResult = BootstrapPage | {
|
|
287
325
|
kind: 'beyond-horizon';
|
|
288
|
-
} | AdapterFailure;
|
|
326
|
+
} | NotReady | AdapterFailure;
|
|
289
327
|
export type RefreshRequest = {
|
|
290
328
|
locator: string;
|
|
291
329
|
selection: string;
|
|
@@ -297,10 +335,15 @@ export type RefreshPage = {
|
|
|
297
335
|
roomVersion: string;
|
|
298
336
|
models?: RoomModels;
|
|
299
337
|
documents: Readonly<Record<string, string>>;
|
|
338
|
+
facts: Readonly<Record<string, SavedFacts>>;
|
|
300
339
|
revisions: Readonly<Record<string, string>>;
|
|
340
|
+
fileIds?: Readonly<Record<string, string>>;
|
|
341
|
+
created?: Readonly<Record<string, string>>;
|
|
301
342
|
changes: Readonly<Record<string, HeadChange>>;
|
|
302
343
|
binaryFiles: Readonly<Record<string, BinaryFile>>;
|
|
303
344
|
removals: readonly string[];
|
|
345
|
+
folders?: readonly string[];
|
|
346
|
+
folderRemovals?: readonly string[];
|
|
304
347
|
pageToken?: PageToken;
|
|
305
348
|
};
|
|
306
349
|
export type RefreshResult = {
|
|
@@ -311,6 +354,7 @@ export type RefreshResult = {
|
|
|
311
354
|
export type MutationRequest = {
|
|
312
355
|
locator: string;
|
|
313
356
|
changeBatch: ChangeBatch;
|
|
357
|
+
file(localId: string): Promise<Blob>;
|
|
314
358
|
upload?: unknown;
|
|
315
359
|
};
|
|
316
360
|
export type RetryableRefusal = ProviderRefusal & {
|
|
@@ -321,17 +365,21 @@ export type ServiceMode = Open<'open' | 'write-halted'>;
|
|
|
321
365
|
export type ServiceModeSignal = {
|
|
322
366
|
observe(notify: (mode: ServiceMode) => void): () => void;
|
|
323
367
|
};
|
|
324
|
-
export type
|
|
325
|
-
kind: 'accepted';
|
|
368
|
+
export type AcceptedRoom = {
|
|
326
369
|
roomVersion: string;
|
|
327
370
|
documents: Readonly<Record<string, string>>;
|
|
328
371
|
revisions: Readonly<Record<string, string>>;
|
|
372
|
+
fileIds?: Readonly<Record<string, string>>;
|
|
329
373
|
changes: Readonly<Record<string, HeadChange>>;
|
|
330
374
|
removals: readonly string[];
|
|
331
375
|
binaryFiles?: Readonly<Record<string, BinaryFile>>;
|
|
376
|
+
};
|
|
377
|
+
export type MutationResult = (AcceptedRoom & {
|
|
378
|
+
kind: 'accepted';
|
|
332
379
|
author?: string;
|
|
333
380
|
time?: string;
|
|
334
|
-
|
|
381
|
+
destination?: AcceptedRoom;
|
|
382
|
+
}) | (ProviderRefusal & {
|
|
335
383
|
kind: 'conflicted';
|
|
336
384
|
roomVersion?: string;
|
|
337
385
|
affected: Readonly<Record<string, string>>;
|
|
@@ -340,15 +388,9 @@ export type MutationResult = {
|
|
|
340
388
|
affected: Readonly<Record<string, string>>;
|
|
341
389
|
}) | RetryableRefusal | {
|
|
342
390
|
kind: 'write-halted';
|
|
343
|
-
} | {
|
|
344
|
-
kind: 'expired';
|
|
345
|
-
restored?: true;
|
|
346
391
|
} | AdapterFailure;
|
|
347
392
|
export type HistoryAuthor = {
|
|
348
|
-
kind: 'user';
|
|
349
|
-
id: string;
|
|
350
|
-
} | {
|
|
351
|
-
kind: 'site';
|
|
393
|
+
kind: 'user' | 'site' | 'inbox' | 'app';
|
|
352
394
|
id: string;
|
|
353
395
|
name: string;
|
|
354
396
|
};
|
|
@@ -380,22 +422,35 @@ export type BinaryRequest = {
|
|
|
380
422
|
locator: string;
|
|
381
423
|
path: string;
|
|
382
424
|
revision: string;
|
|
383
|
-
fileRef?: string;
|
|
384
|
-
} | {
|
|
385
|
-
kind: 'reference';
|
|
386
|
-
fileRef: string;
|
|
387
|
-
referrer: unknown;
|
|
388
|
-
};
|
|
389
|
-
export type ReferrerScope = {
|
|
390
|
-
kind: 'room';
|
|
391
|
-
locator: string;
|
|
392
|
-
path?: string;
|
|
393
|
-
} | {
|
|
394
|
-
kind: 'conversations';
|
|
395
425
|
};
|
|
396
426
|
export type BinaryResult = {
|
|
397
427
|
kind: 'binary';
|
|
428
|
+
body: ReadableStream<Uint8Array>;
|
|
429
|
+
mediaType: string;
|
|
430
|
+
sha256?: string;
|
|
431
|
+
} | (ProviderRefusal & {
|
|
432
|
+
kind: 'rejected';
|
|
433
|
+
}) | AdapterFailure;
|
|
434
|
+
export type BinaryLinkResult = {
|
|
435
|
+
kind: 'link';
|
|
436
|
+
url: string;
|
|
437
|
+
name: string;
|
|
438
|
+
mediaType?: string;
|
|
439
|
+
} | (ProviderRefusal & {
|
|
440
|
+
kind: 'rejected';
|
|
441
|
+
}) | AdapterFailure;
|
|
442
|
+
export type AttachRequest = {
|
|
443
|
+
locator: string;
|
|
444
|
+
name: string;
|
|
445
|
+
mediaType: string;
|
|
446
|
+
byteLength: number;
|
|
447
|
+
sha256: string;
|
|
398
448
|
blob: Blob;
|
|
449
|
+
};
|
|
450
|
+
export type AttachResult = {
|
|
451
|
+
kind: 'attached';
|
|
452
|
+
path: string;
|
|
453
|
+
revision: string;
|
|
399
454
|
} | (ProviderRefusal & {
|
|
400
455
|
kind: 'rejected';
|
|
401
456
|
}) | AdapterFailure;
|
|
@@ -414,65 +469,79 @@ export type ActionResult = {
|
|
|
414
469
|
} | (ProviderRefusal & {
|
|
415
470
|
kind: 'rejected';
|
|
416
471
|
}) | AdapterFailure;
|
|
472
|
+
export type SearchHit = {
|
|
473
|
+
room: string;
|
|
474
|
+
path: string;
|
|
475
|
+
line?: number;
|
|
476
|
+
snippet?: string;
|
|
477
|
+
};
|
|
478
|
+
export type SearchAsk = {
|
|
479
|
+
text: string;
|
|
480
|
+
rooms: readonly string[] | null;
|
|
481
|
+
};
|
|
482
|
+
export type SearchAnswer = {
|
|
483
|
+
kind: 'found';
|
|
484
|
+
documents: readonly SearchHit[];
|
|
485
|
+
} | (ProviderRefusal & {
|
|
486
|
+
kind: 'rejected';
|
|
487
|
+
}) | AdapterFailure;
|
|
417
488
|
export type HeldRoom = {
|
|
418
489
|
locator: string;
|
|
490
|
+
roomVersion: string | null;
|
|
491
|
+
};
|
|
492
|
+
export type RoomChange = {
|
|
493
|
+
kind: 'room-change';
|
|
494
|
+
locator: string;
|
|
495
|
+
from: string | null;
|
|
419
496
|
roomVersion: string;
|
|
420
|
-
|
|
421
|
-
|
|
497
|
+
read(): Promise<RefreshPage>;
|
|
498
|
+
};
|
|
499
|
+
export type AuthorityChange = {
|
|
500
|
+
kind: 'authority-changed';
|
|
501
|
+
rooms: readonly DiscoveredRoom[];
|
|
502
|
+
left: readonly string[];
|
|
503
|
+
member?: Member;
|
|
422
504
|
};
|
|
423
505
|
export type RoomStreamEvent = {
|
|
424
506
|
kind: 'opened';
|
|
507
|
+
} | {
|
|
508
|
+
kind: 'discovered';
|
|
509
|
+
discovery: Discovery;
|
|
425
510
|
} | {
|
|
426
511
|
kind: 'closed';
|
|
427
512
|
revoked: boolean;
|
|
513
|
+
lost: boolean;
|
|
514
|
+
authorityChanged: boolean;
|
|
428
515
|
} | {
|
|
429
|
-
kind: '
|
|
516
|
+
kind: 'caught-up';
|
|
430
517
|
expired: readonly string[];
|
|
431
|
-
} |
|
|
432
|
-
kind: 'room-version';
|
|
433
|
-
locator: string;
|
|
434
|
-
roomVersion: string;
|
|
435
|
-
};
|
|
436
|
-
export type KeptReceipt = {
|
|
437
|
-
key: string;
|
|
438
|
-
head: unknown;
|
|
439
|
-
};
|
|
440
|
-
export type StreamReceipts = {
|
|
441
|
-
heads(): Promise<readonly KeptReceipt[]>;
|
|
442
|
-
parts(key: string, count: number): Promise<readonly unknown[]>;
|
|
443
|
-
keep(key: string, head: unknown, part?: {
|
|
444
|
-
index: number;
|
|
445
|
-
value: unknown;
|
|
446
|
-
}): Promise<void>;
|
|
447
|
-
drop(keys: readonly string[]): Promise<void>;
|
|
448
|
-
};
|
|
449
|
-
export type AcquiredDemand = {
|
|
450
|
-
rooms: readonly string[];
|
|
451
|
-
conversations: boolean;
|
|
452
|
-
};
|
|
518
|
+
} | AuthorityChange | RoomChange;
|
|
453
519
|
export type RoomStream = {
|
|
454
|
-
hold(rooms: readonly HeldRoom[]
|
|
455
|
-
|
|
456
|
-
published(locator: string, roomVersion: string): void;
|
|
457
|
-
observe(notify: (event: RoomStreamEvent) => void, receipts: StreamReceipts): () => void;
|
|
520
|
+
hold(rooms: readonly HeldRoom[]): void;
|
|
521
|
+
observe(notify: (event: RoomStreamEvent) => void): () => void;
|
|
458
522
|
};
|
|
459
523
|
export type Adapter = {
|
|
460
524
|
readonly localSaves?: true;
|
|
461
|
-
readonly
|
|
525
|
+
readonly roomTypes?: string;
|
|
526
|
+
readonly nameableRoomTypes?: readonly string[];
|
|
527
|
+
readonly typedPaths?: readonly TypedPath[];
|
|
528
|
+
readonly unkeptReads?: readonly string[];
|
|
529
|
+
readonly leadingReads?: readonly string[];
|
|
462
530
|
authorize(): Promise<Authorization>;
|
|
463
|
-
discover(authorization: Authorization): Promise<DiscoverResult>;
|
|
531
|
+
discover?(authorization: Authorization): Promise<DiscoverResult>;
|
|
464
532
|
bootstrap(authorization: Authorization, request: BootstrapRequest): Promise<BootstrapResult>;
|
|
465
|
-
refresh(authorization: Authorization, request: RefreshRequest): Promise<RefreshResult>;
|
|
533
|
+
refresh?(authorization: Authorization, request: RefreshRequest): Promise<RefreshResult>;
|
|
466
534
|
mutate(authorization: Authorization, request: MutationRequest, keep: (upload: unknown) => Promise<void>): Promise<MutationResult>;
|
|
467
535
|
history(authorization: Authorization, request: HistoryRequest): Promise<HistoryResult>;
|
|
468
536
|
binary(authorization: Authorization, request: BinaryRequest): Promise<BinaryResult>;
|
|
469
|
-
|
|
537
|
+
link(authorization: Authorization, request: BinaryRequest): Promise<BinaryLinkResult>;
|
|
538
|
+
attach(authorization: Authorization, request: AttachRequest): Promise<AttachResult>;
|
|
470
539
|
action(authorization: Authorization, request: ActionRequest): Promise<ActionResult>;
|
|
540
|
+
search?(authorization: Authorization, request: SearchAsk): Promise<SearchAnswer>;
|
|
471
541
|
reached(locator: string, roomVersion: string, target: string): boolean;
|
|
472
542
|
follows(locator: string, roomVersion: string, next: string): boolean;
|
|
473
543
|
roomStream?: RoomStream;
|
|
474
544
|
conversations?: ConversationStream;
|
|
475
545
|
serviceMode?: ServiceModeSignal;
|
|
476
546
|
};
|
|
477
|
-
export {};
|
|
478
547
|
//# sourceMappingURL=adapter.d.ts.map
|