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