@agentshouse/mdruntime 0.1.0-c31fdf9e58db7 → 0.1.0-c33f874b1f932
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 +21 -19
- package/dist/acceptance.d.ts +3 -0
- package/dist/acceptance.d.ts.map +1 -0
- package/dist/acceptance.js +299 -0
- package/dist/act-lanes.d.ts +30 -0
- package/dist/act-lanes.d.ts.map +1 -0
- package/dist/act-lanes.js +225 -0
- package/dist/actions.d.ts +26 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +302 -0
- package/dist/adapter.d.ts +89 -79
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts +3 -11
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +20 -60
- package/dist/bootstrap.d.ts +9 -5
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +204 -85
- package/dist/cell.d.ts +6 -0
- package/dist/cell.d.ts.map +1 -0
- package/dist/cell.js +9 -0
- package/dist/chain.d.ts +2 -1
- package/dist/chain.d.ts.map +1 -1
- package/dist/change-set.d.ts +4 -0
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +6 -0
- package/dist/change.d.ts +1 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +4 -2
- package/dist/chat-types.d.ts +3 -0
- package/dist/chat-types.d.ts.map +1 -0
- package/dist/chat-types.js +11 -0
- package/dist/client.d.ts +30 -22
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +37 -20
- package/dist/collection.d.ts +26 -4
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +19 -2
- package/dist/compile.d.ts +8 -6
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +255 -318
- package/dist/connection.d.ts +5 -141
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +111 -5061
- package/dist/context.d.ts +2 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +7 -0
- package/dist/conversation-live.d.ts +150 -0
- package/dist/conversation-live.d.ts.map +1 -0
- package/dist/conversation-live.js +259 -0
- package/dist/conversation-row.d.ts +35 -0
- package/dist/conversation-row.d.ts.map +1 -0
- package/dist/conversation-row.js +55 -0
- package/dist/conversation.d.ts +61 -45
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +999 -910
- package/dist/declaration.d.ts +10 -0
- package/dist/declaration.d.ts.map +1 -0
- package/dist/declaration.js +24 -0
- package/dist/discovery.d.ts +10 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +150 -0
- package/dist/durability.d.ts +19 -0
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +4 -0
- package/dist/entry.d.ts +2 -2
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +18 -8
- package/dist/expectation.d.ts +26 -13
- package/dist/expectation.d.ts.map +1 -1
- package/dist/expectation.js +72 -19
- package/dist/failure.d.ts +3 -0
- package/dist/failure.d.ts.map +1 -1
- package/dist/failure.js +6 -0
- package/dist/figures.d.ts +49 -0
- package/dist/figures.d.ts.map +1 -0
- package/dist/figures.js +199 -0
- package/dist/file.d.ts.map +1 -1
- package/dist/file.js +2 -1
- package/dist/holdings.d.ts +29 -0
- package/dist/holdings.d.ts.map +1 -0
- package/dist/holdings.js +95 -0
- package/dist/host.d.ts +21 -6
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +77 -36
- package/dist/identity.d.ts +0 -1
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +0 -3
- package/dist/index.d.ts +34 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -5
- package/dist/install.d.ts +60 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +537 -0
- package/dist/lifecycle.d.ts +7 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +278 -0
- package/dist/listing.d.ts +52 -0
- package/dist/listing.d.ts.map +1 -0
- package/dist/listing.js +152 -0
- package/dist/live.d.ts +9 -6
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +118 -35
- package/dist/loaded.d.ts +5 -0
- package/dist/loaded.d.ts.map +1 -0
- package/dist/loaded.js +40 -0
- package/dist/locks.d.ts +7 -0
- package/dist/locks.d.ts.map +1 -0
- package/dist/locks.js +32 -0
- package/dist/lost.d.ts +5 -0
- package/dist/lost.d.ts.map +1 -0
- package/dist/lost.js +49 -0
- package/dist/media.d.ts +6 -1
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +68 -17
- package/dist/memory.d.ts +11 -3
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +102 -32
- package/dist/messages.d.ts +35 -5
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +108 -36
- package/dist/model.d.ts +2 -10
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +0 -14
- package/dist/models.d.ts +10 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +153 -0
- package/dist/observation.d.ts +28 -13
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +185 -81
- package/dist/opened.d.ts +1 -1
- package/dist/opened.d.ts.map +1 -1
- package/dist/opened.js +5 -5
- package/dist/opening.d.ts +4 -0
- package/dist/opening.d.ts.map +1 -0
- package/dist/opening.js +53 -0
- package/dist/outcome.d.ts +11 -1
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +26 -2
- package/dist/overlay.d.ts +6 -1
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +47 -21
- package/dist/page-metadata.d.ts +8 -0
- package/dist/page-metadata.d.ts.map +1 -0
- package/dist/page-metadata.js +19 -0
- package/dist/parts.d.ts +4 -0
- package/dist/parts.d.ts.map +1 -0
- package/dist/parts.js +13 -0
- package/dist/paths.d.ts +1 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +22 -0
- package/dist/preparation.d.ts +41 -0
- package/dist/preparation.d.ts.map +1 -0
- package/dist/preparation.js +314 -0
- package/dist/presence.d.ts +58 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +231 -0
- package/dist/queries.d.ts +16 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +308 -0
- package/dist/query.d.ts +13 -209
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -505
- package/dist/questions.d.ts +29 -0
- package/dist/questions.d.ts.map +1 -0
- package/dist/questions.js +115 -0
- package/dist/queue.d.ts +40 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +450 -0
- package/dist/reach.d.ts +15 -14
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +233 -125
- package/dist/react.d.ts +17 -3
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +33 -1
- package/dist/read.d.ts +7 -0
- package/dist/read.d.ts.map +1 -0
- package/dist/read.js +17 -0
- package/dist/readiness.d.ts +9 -6
- package/dist/readiness.d.ts.map +1 -1
- package/dist/readiness.js +3 -5
- package/dist/reads.d.ts +39 -0
- package/dist/reads.d.ts.map +1 -0
- package/dist/reads.js +178 -0
- package/dist/recovery.d.ts +3 -1
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +38 -8
- package/dist/refresh.d.ts +1 -1
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +9 -2
- package/dist/refusal.d.ts +5 -0
- package/dist/refusal.d.ts.map +1 -0
- package/dist/refusal.js +55 -0
- package/dist/replica.d.ts +11 -16
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +64 -30
- 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 +7 -8
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +113 -111
- 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 +16 -22
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +49 -186
- package/dist/runtime.d.ts +34 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +1 -0
- package/dist/save.d.ts +42 -86
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +344 -174
- package/dist/saves.d.ts +32 -0
- package/dist/saves.d.ts.map +1 -0
- package/dist/saves.js +409 -0
- package/dist/search.d.ts +12 -63
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +9 -52
- package/dist/seed.d.ts +11 -2
- package/dist/seed.d.ts.map +1 -1
- package/dist/seed.js +71 -1
- package/dist/shared.d.ts +1 -6
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +13 -95
- package/dist/shown.d.ts +33 -0
- package/dist/shown.d.ts.map +1 -0
- package/dist/shown.js +309 -0
- package/dist/socket/admission.d.ts +7 -0
- package/dist/socket/admission.d.ts.map +1 -0
- package/dist/socket/admission.js +39 -0
- package/dist/socket/answers.d.ts +6 -0
- package/dist/socket/answers.d.ts.map +1 -0
- package/dist/socket/answers.js +20 -0
- package/dist/socket/lanes.d.ts +28 -0
- package/dist/socket/lanes.d.ts.map +1 -0
- package/dist/socket/lanes.js +103 -0
- package/dist/socket/reads.d.ts +10 -0
- package/dist/socket/reads.d.ts.map +1 -0
- package/dist/socket/reads.js +31 -0
- package/dist/socket/session.d.ts +38 -0
- package/dist/socket/session.d.ts.map +1 -0
- package/dist/socket/session.js +23 -0
- package/dist/socket.d.ts +67 -0
- package/dist/socket.d.ts.map +1 -0
- package/dist/socket.js +164 -0
- package/dist/source.d.ts +54 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +82 -0
- package/dist/status.d.ts +0 -2
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +0 -6
- package/dist/store/installs.d.ts +30 -0
- package/dist/store/installs.d.ts.map +1 -0
- package/dist/store/installs.js +40 -0
- package/dist/store/readiness.d.ts +11 -0
- package/dist/store/readiness.d.ts.map +1 -0
- package/dist/store/readiness.js +68 -0
- package/dist/store/records.d.ts +217 -0
- package/dist/store/records.d.ts.map +1 -0
- package/dist/store/records.js +464 -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/rooms-shown.d.ts +8 -0
- package/dist/store/rooms-shown.d.ts.map +1 -0
- package/dist/store/rooms-shown.js +13 -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 +113 -145
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +171 -365
- package/dist/stored.d.ts +72 -35
- package/dist/stored.d.ts.map +1 -1
- package/dist/stored.js +340 -197
- package/dist/surface.d.ts +89 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +222 -0
- package/dist/sync.d.ts +19 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +535 -0
- package/dist/tables.d.ts +124 -30
- package/dist/tables.d.ts.map +1 -1
- package/dist/tables.js +242 -62
- package/dist/tallies.d.ts +18 -0
- package/dist/tallies.d.ts.map +1 -0
- package/dist/tallies.js +128 -0
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +9 -12
- package/dist/windows.d.ts +1 -12
- package/dist/windows.d.ts.map +1 -1
- package/dist/windows.js +2 -75
- package/dist/wire.d.ts +60 -7
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +21 -4
- package/package.json +3 -2
- package/dist/attempt.d.ts +0 -16
- package/dist/attempt.d.ts.map +0 -1
- package/dist/attempt.js +0 -70
- package/dist/fence.d.ts +0 -6
- package/dist/fence.d.ts.map +0 -1
- package/dist/fence.js +0 -10
- package/dist/fulltext.d.ts +0 -27
- package/dist/fulltext.d.ts.map +0 -1
- package/dist/fulltext.js +0 -370
- package/dist/log.d.ts +0 -5
- package/dist/log.d.ts.map +0 -1
- package/dist/log.js +0 -14
- package/dist/words.d.ts +0 -19
- package/dist/words.d.ts.map +0 -1
- package/dist/words.js +0 -156
package/dist/actions.js
ADDED
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import { roomTarget, target } from '@agentshouse/mdmodel';
|
|
2
|
+
import { CATCHING_UP, holdsSubmission, 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, failure, historyAnswer, LOCKED_UNREADABLE, lockedRoom, handedOutcome, UNANSWERED, 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, presence } = 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 = presence.losses();
|
|
30
|
+
try {
|
|
31
|
+
const result = await socket.history(authorization, {
|
|
32
|
+
locator,
|
|
33
|
+
path,
|
|
34
|
+
...(query.revision === undefined ? {} : { revision: query.revision }),
|
|
35
|
+
...(query.pageToken === undefined ? {} : { pageToken: query.pageToken }),
|
|
36
|
+
});
|
|
37
|
+
if (presence.lostSince(locator, since))
|
|
38
|
+
return failure({ kind: 'room-not-readable', locator });
|
|
39
|
+
if (result.kind === 'scoped-refusal') {
|
|
40
|
+
const room = await store.record(result.locator);
|
|
41
|
+
if (room !== undefined)
|
|
42
|
+
await scoped(runtime, result, room.locator, room.declaration);
|
|
43
|
+
}
|
|
44
|
+
if (result.kind === 'revoked-authorization')
|
|
45
|
+
await refuse(runtime, 'revoked-authorization');
|
|
46
|
+
return historyAnswer(result);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return UNCERTAIN;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export async function located(runtime, room, path, destination) {
|
|
53
|
+
const crossing = roomTarget(destination);
|
|
54
|
+
const listing = await listingNow(runtime);
|
|
55
|
+
if (crossing === null) {
|
|
56
|
+
const named = target(path, destination);
|
|
57
|
+
return named === null || !listing.has(room) ? null : { room, path: named };
|
|
58
|
+
}
|
|
59
|
+
const held = [...listing.values()].find((listed) => listed.handle === crossing.handle);
|
|
60
|
+
return held === undefined ? null : { room: held.locator, path: crossing.path };
|
|
61
|
+
}
|
|
62
|
+
export async function resolveReference(runtime, room, path, destination) {
|
|
63
|
+
const { store } = runtime;
|
|
64
|
+
if (roomTarget(destination) === null && target(path, destination) === null) {
|
|
65
|
+
return ABSENT_TARGET;
|
|
66
|
+
}
|
|
67
|
+
const at = await located(runtime, room, path, destination);
|
|
68
|
+
if (at === null)
|
|
69
|
+
return UNREADABLE;
|
|
70
|
+
if (await locked(runtime, at.room))
|
|
71
|
+
return LOCKED_UNREADABLE;
|
|
72
|
+
const held = await store.record(at.room);
|
|
73
|
+
if (held !== undefined &&
|
|
74
|
+
(await (await store.open()).entries(held.key, 'visible', [at.path])).length > 0) {
|
|
75
|
+
return { kind: 'document', ...at };
|
|
76
|
+
}
|
|
77
|
+
const history = await readHistory(runtime, at.room, at.path);
|
|
78
|
+
if (history.kind === 'no-history' || history.kind === 'revision')
|
|
79
|
+
return ABSENT_TARGET;
|
|
80
|
+
if (history.kind !== 'history')
|
|
81
|
+
return history;
|
|
82
|
+
const [last] = history.revisions;
|
|
83
|
+
if (last === undefined)
|
|
84
|
+
return ABSENT_TARGET;
|
|
85
|
+
return history.deleted === true
|
|
86
|
+
? { kind: 'deleted', ...at, revision: last }
|
|
87
|
+
: { kind: 'document', ...at };
|
|
88
|
+
}
|
|
89
|
+
async function declaredAction({ store }, name) {
|
|
90
|
+
for (const capability of (await (await store.open()).facts()).capabilities) {
|
|
91
|
+
for (const action of capability.actions ?? []) {
|
|
92
|
+
if (action.name === name)
|
|
93
|
+
return action;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
async function calledRooms(runtime, name, input) {
|
|
99
|
+
const member = (await declaredAction(runtime, name))?.room;
|
|
100
|
+
if (member === undefined || input === null || typeof input !== 'object')
|
|
101
|
+
return [];
|
|
102
|
+
const named = input[member];
|
|
103
|
+
return (Array.isArray(named) ? named : [named]).filter((room) => typeof room === 'string');
|
|
104
|
+
}
|
|
105
|
+
export async function invokeAction(runtime, name, input, { dispatching, attempt } = {}) {
|
|
106
|
+
const { store, socket, retries } = runtime;
|
|
107
|
+
const { session } = socket;
|
|
108
|
+
await socket.ready;
|
|
109
|
+
if (socket.closed() || session.now().refusal !== null) {
|
|
110
|
+
return handedOutcome(retries, attempt, UNANSWERED);
|
|
111
|
+
}
|
|
112
|
+
if ((await declaredAction(runtime, name)) === undefined)
|
|
113
|
+
return undeclared(name);
|
|
114
|
+
try {
|
|
115
|
+
await socket.authorize();
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
return handedOutcome(retries, attempt, UNANSWERED);
|
|
119
|
+
}
|
|
120
|
+
const { closed, authorization, refusal } = session.now();
|
|
121
|
+
if (closed || authorization === undefined || refusal !== null) {
|
|
122
|
+
return handedOutcome(retries, attempt, UNANSWERED);
|
|
123
|
+
}
|
|
124
|
+
await dispatching?.();
|
|
125
|
+
try {
|
|
126
|
+
const result = await socket.action(authorization, { name, input });
|
|
127
|
+
if (result.kind === 'scoped-refusal') {
|
|
128
|
+
const room = await store.record(result.locator);
|
|
129
|
+
if (room !== undefined)
|
|
130
|
+
await scoped(runtime, result, room.locator, room.declaration);
|
|
131
|
+
}
|
|
132
|
+
if (result.kind === 'revoked-authorization')
|
|
133
|
+
await refuse(runtime, 'revoked-authorization');
|
|
134
|
+
return handedOutcome(retries, attempt, result);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
return handedOutcome(retries, attempt, { kind: 'transport-uncertainty', failure: error });
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
export async function readConversationHistory(runtime, request) {
|
|
141
|
+
const { socket, retries } = runtime;
|
|
142
|
+
const caught = { step: 'conversations', instance: CATCHING_UP };
|
|
143
|
+
await socket.ready;
|
|
144
|
+
const stream = socket.conversations();
|
|
145
|
+
if (socket.closed() || socket.session.now().refusal !== null || stream?.history === undefined) {
|
|
146
|
+
return handedOutcome(retries, caught, UNANSWERED);
|
|
147
|
+
}
|
|
148
|
+
try {
|
|
149
|
+
const result = await stream.history(request);
|
|
150
|
+
if (result.kind === 'revoked-authorization')
|
|
151
|
+
await refuse(runtime, 'revoked-authorization');
|
|
152
|
+
return handedOutcome(retries, caught, result);
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
return handedOutcome(retries, caught, { kind: 'transport-uncertainty', failure: error });
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
function unsettled(result) {
|
|
159
|
+
if (result.kind === 'action')
|
|
160
|
+
return false;
|
|
161
|
+
return result.retryable && (result.kind !== 'rejected' || result.reset === undefined);
|
|
162
|
+
}
|
|
163
|
+
function numberedCall(runtime, name, input, operation, dispatching) {
|
|
164
|
+
return invokeAction(runtime, name, input, {
|
|
165
|
+
dispatching,
|
|
166
|
+
attempt: { step: 'sending', instance: `action ${operation}` },
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
function keptSender(runtime, name, input, operation, resent = false) {
|
|
170
|
+
const { store, socket } = runtime;
|
|
171
|
+
const { lanes } = socket;
|
|
172
|
+
const dispatching = async () => (await store.open()).keepCall({ operation, name, input });
|
|
173
|
+
let waiting = [];
|
|
174
|
+
let last = UNCERTAIN;
|
|
175
|
+
let lost = resent;
|
|
176
|
+
const tell = (result) => {
|
|
177
|
+
last = result;
|
|
178
|
+
const told = waiting;
|
|
179
|
+
waiting = [];
|
|
180
|
+
for (const answer of told)
|
|
181
|
+
answer(result);
|
|
182
|
+
};
|
|
183
|
+
const sender = {
|
|
184
|
+
next: () => new Promise((answer) => waiting.push(answer)),
|
|
185
|
+
async send() {
|
|
186
|
+
let result;
|
|
187
|
+
try {
|
|
188
|
+
result = await numberedCall(runtime, name, input, operation, dispatching);
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
tell(last);
|
|
192
|
+
throw error;
|
|
193
|
+
}
|
|
194
|
+
if (unsettled(result))
|
|
195
|
+
lost = true;
|
|
196
|
+
else {
|
|
197
|
+
await (await store.open()).dropCall(operation);
|
|
198
|
+
lanes.settle(operation, lost);
|
|
199
|
+
}
|
|
200
|
+
tell(result);
|
|
201
|
+
return result;
|
|
202
|
+
},
|
|
203
|
+
release() {
|
|
204
|
+
lanes.sent(operation, sender);
|
|
205
|
+
tell(last);
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
lanes.sending(operation, sender);
|
|
209
|
+
return sender;
|
|
210
|
+
}
|
|
211
|
+
async function recoveredAction(runtime, name, input, attempt) {
|
|
212
|
+
const { socket, recovery } = runtime;
|
|
213
|
+
const operation = operationOf(input);
|
|
214
|
+
if (operation === null)
|
|
215
|
+
return invokeAction(runtime, name, input, { attempt });
|
|
216
|
+
const held = socket.lanes.sender(operation);
|
|
217
|
+
if (held !== undefined)
|
|
218
|
+
return held.next();
|
|
219
|
+
const sender = keptSender(runtime, name, input, operation);
|
|
220
|
+
let first;
|
|
221
|
+
try {
|
|
222
|
+
first = await sender.send();
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
sender.release();
|
|
226
|
+
throw error;
|
|
227
|
+
}
|
|
228
|
+
if (!unsettled(first)) {
|
|
229
|
+
sender.release();
|
|
230
|
+
return first;
|
|
231
|
+
}
|
|
232
|
+
void recovery
|
|
233
|
+
.attempt(`action ${operation}`, async () => {
|
|
234
|
+
if (socket.closed() || socket.session.now().refusal !== null)
|
|
235
|
+
return 'done';
|
|
236
|
+
if (!socket.isOpen())
|
|
237
|
+
return 'again';
|
|
238
|
+
return unsettled(await sender.send()) ? 'again' : 'done';
|
|
239
|
+
}, { again: true })
|
|
240
|
+
.finally(() => sender.release());
|
|
241
|
+
return first;
|
|
242
|
+
}
|
|
243
|
+
export async function called(runtime, name, input, attempt) {
|
|
244
|
+
await runtime.socket.ready;
|
|
245
|
+
const lockedNow = await lockedRooms(runtime);
|
|
246
|
+
const room = (await calledRooms(runtime, name, input)).find((one) => lockedNow.includes(one));
|
|
247
|
+
return room === undefined ? recoveredAction(runtime, name, input, attempt) : lockedRoom(room);
|
|
248
|
+
}
|
|
249
|
+
export async function answeredCall(runtime, operation) {
|
|
250
|
+
const { store, socket } = runtime;
|
|
251
|
+
const { lanes } = socket;
|
|
252
|
+
const held = () => lanes.sender(operation) !== undefined || lanes.unclaimed(operation);
|
|
253
|
+
if (!held()) {
|
|
254
|
+
const calls = await (await store.open()).calls();
|
|
255
|
+
const kept = calls.some((one) => one.operation === operation) ||
|
|
256
|
+
(await holdsSubmission(runtime.conversations, operation));
|
|
257
|
+
if (!held() && !kept)
|
|
258
|
+
return false;
|
|
259
|
+
}
|
|
260
|
+
await lanes.settled(operation);
|
|
261
|
+
return true;
|
|
262
|
+
}
|
|
263
|
+
export async function resendCalls(runtime, signal) {
|
|
264
|
+
const { store, socket } = runtime;
|
|
265
|
+
if (!socket.isOpen() || socket.closed() || socket.stopping())
|
|
266
|
+
return 'done';
|
|
267
|
+
const local = await store.open();
|
|
268
|
+
for (const held of await local.calls()) {
|
|
269
|
+
if (socket.lanes.sender(held.operation) !== undefined)
|
|
270
|
+
continue;
|
|
271
|
+
if (socket.closed() || signal.aborted)
|
|
272
|
+
return 'done';
|
|
273
|
+
const sender = keptSender(runtime, held.name, held.input, held.operation, true);
|
|
274
|
+
try {
|
|
275
|
+
if (unsettled(await sender.send()))
|
|
276
|
+
return 'again';
|
|
277
|
+
}
|
|
278
|
+
finally {
|
|
279
|
+
sender.release();
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
return 'done';
|
|
283
|
+
}
|
|
284
|
+
async function resendPass({ socket, conversations }, signal) {
|
|
285
|
+
if (!socket.continuing() || !socket.isOpen() || socket.stopping())
|
|
286
|
+
return 'done';
|
|
287
|
+
const reading = { complete: true, reachable: true };
|
|
288
|
+
try {
|
|
289
|
+
await resendConversations(conversations, reading);
|
|
290
|
+
}
|
|
291
|
+
catch {
|
|
292
|
+
reading.reachable = false;
|
|
293
|
+
}
|
|
294
|
+
if (signal.aborted)
|
|
295
|
+
return 'done';
|
|
296
|
+
return reading.reachable && reading.complete ? 'done' : 'again';
|
|
297
|
+
}
|
|
298
|
+
export function resendLater(runtime) {
|
|
299
|
+
if (!runtime.socket.isOpen())
|
|
300
|
+
return;
|
|
301
|
+
void runtime.recovery.attempt('resend', (signal) => resendPass(runtime, signal), { again: true });
|
|
302
|
+
}
|
package/dist/adapter.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import type { SavedFacts, TypedPath, VerifiedModel } 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;
|
|
@@ -11,22 +14,25 @@ export type TypedSelection = {
|
|
|
11
14
|
};
|
|
12
15
|
export type OperationScopes = {
|
|
13
16
|
write: readonly string[];
|
|
14
|
-
|
|
17
|
+
erase: readonly string[];
|
|
15
18
|
};
|
|
16
19
|
export type ReplicaAdmission = {
|
|
17
20
|
selection: string;
|
|
18
21
|
admission: Open<'admitted' | 'unavailable'>;
|
|
19
22
|
offline: Open<'locked' | 'open'>;
|
|
20
23
|
};
|
|
21
|
-
export type
|
|
22
|
-
name: string;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
export type RoomDeclaration = {
|
|
25
|
+
readonly name: string;
|
|
26
|
+
readonly handle: string;
|
|
27
|
+
readonly operations: OperationScopes;
|
|
28
|
+
readonly replica: ReplicaAdmission;
|
|
29
|
+
readonly typedSelection: TypedSelection | null;
|
|
30
|
+
readonly providerOwnedPaths: readonly string[];
|
|
31
|
+
readonly authoredPaths: readonly string[];
|
|
32
|
+
};
|
|
33
|
+
export type DiscoveredRoom = RoomDeclaration & {
|
|
34
|
+
readonly locator: string;
|
|
35
|
+
readonly roomVersion: string;
|
|
30
36
|
};
|
|
31
37
|
export type Capability = {
|
|
32
38
|
name: string;
|
|
@@ -36,16 +42,16 @@ export type Capability = {
|
|
|
36
42
|
export type ListedConversation = {
|
|
37
43
|
conversation: string;
|
|
38
44
|
agent: string;
|
|
39
|
-
agentName: string;
|
|
40
|
-
agentRetired: boolean;
|
|
41
45
|
name: string;
|
|
42
46
|
created: string;
|
|
43
47
|
finished: string | null;
|
|
44
48
|
outcome: string | null;
|
|
45
49
|
waiting: boolean;
|
|
46
50
|
newest: string | null;
|
|
51
|
+
processEnded: string | null;
|
|
52
|
+
subject: string | null;
|
|
47
53
|
};
|
|
48
|
-
export type ConversationAction = 'conversations/create' | 'conversations/send' | 'conversations/interaction/answer' | 'conversations/interrupt' | 'conversations/kill' | 'conversations/delete';
|
|
54
|
+
export type ConversationAction = 'conversations/create' | 'conversations/send' | 'conversations/interaction/answer' | 'conversations/interrupt' | 'conversations/kill' | 'conversations/delete' | 'conversations/take-out' | 'conversations/rename' | 'conversations/option/set' | 'conversations/retry' | 'agent-functions/decide';
|
|
49
55
|
export type ConversationMessage = {
|
|
50
56
|
identity: string;
|
|
51
57
|
turn: string;
|
|
@@ -54,6 +60,7 @@ export type ConversationMessage = {
|
|
|
54
60
|
};
|
|
55
61
|
export type AcceptedMessage = ConversationMessage & {
|
|
56
62
|
position: string;
|
|
63
|
+
change: string;
|
|
57
64
|
};
|
|
58
65
|
export type ConversationHistoryRequest = {
|
|
59
66
|
conversations: readonly {
|
|
@@ -69,37 +76,10 @@ export type ConversationHistoryPage = {
|
|
|
69
76
|
export type ConversationHistories = {
|
|
70
77
|
histories: readonly ConversationHistoryPage[];
|
|
71
78
|
};
|
|
72
|
-
export type TurnContext = {
|
|
73
|
-
used: number;
|
|
74
|
-
window: number;
|
|
75
|
-
};
|
|
76
79
|
export type TurnOperation = {
|
|
77
80
|
op: 'begin';
|
|
78
81
|
at: string;
|
|
79
|
-
} |
|
|
80
|
-
op: 'start';
|
|
81
|
-
index: number;
|
|
82
|
-
part: unknown;
|
|
83
|
-
} | {
|
|
84
|
-
op: 'append';
|
|
85
|
-
index: number;
|
|
86
|
-
text: string;
|
|
87
|
-
} | {
|
|
88
|
-
op: 'status';
|
|
89
|
-
index: number;
|
|
90
|
-
status: string;
|
|
91
|
-
result: unknown;
|
|
92
|
-
} | {
|
|
93
|
-
op: 'count';
|
|
94
|
-
index: number;
|
|
95
|
-
count: number;
|
|
96
|
-
} | {
|
|
97
|
-
op: 'plan';
|
|
98
|
-
index: number;
|
|
99
|
-
entries: readonly unknown[];
|
|
100
|
-
} | ({
|
|
101
|
-
op: 'context';
|
|
102
|
-
} & TurnContext);
|
|
82
|
+
} | Operation;
|
|
103
83
|
export type ProcessCommand = {
|
|
104
84
|
[field: string]: unknown;
|
|
105
85
|
name: string;
|
|
@@ -136,10 +116,6 @@ export type SessionOption = (SessionOptionNaming & {
|
|
|
136
116
|
type: 'boolean';
|
|
137
117
|
currentValue: boolean;
|
|
138
118
|
});
|
|
139
|
-
export type RunningSubagent = {
|
|
140
|
-
description: string;
|
|
141
|
-
activity: string | null;
|
|
142
|
-
};
|
|
143
119
|
export type ConversationEvent = {
|
|
144
120
|
kind: 'turn';
|
|
145
121
|
conversation: string;
|
|
@@ -166,9 +142,9 @@ export type ConversationEvent = {
|
|
|
166
142
|
conversation: string;
|
|
167
143
|
step: string | null;
|
|
168
144
|
} | {
|
|
169
|
-
kind: '
|
|
145
|
+
kind: 'state';
|
|
170
146
|
conversation: string;
|
|
171
|
-
|
|
147
|
+
state: SessionState | null;
|
|
172
148
|
} | {
|
|
173
149
|
kind: 'link';
|
|
174
150
|
conversation: string;
|
|
@@ -176,6 +152,7 @@ export type ConversationEvent = {
|
|
|
176
152
|
} | {
|
|
177
153
|
kind: 'deliveries';
|
|
178
154
|
conversation: string;
|
|
155
|
+
waiting: readonly string[];
|
|
179
156
|
unknown: readonly string[];
|
|
180
157
|
} | {
|
|
181
158
|
kind: 'accepted-message';
|
|
@@ -186,6 +163,7 @@ export type ConversationEvent = {
|
|
|
186
163
|
conversation: string;
|
|
187
164
|
} | {
|
|
188
165
|
kind: 'list';
|
|
166
|
+
agents: readonly ListedAgent[];
|
|
189
167
|
entries: readonly ListedConversation[];
|
|
190
168
|
whole: boolean;
|
|
191
169
|
more: boolean;
|
|
@@ -193,20 +171,39 @@ export type ConversationEvent = {
|
|
|
193
171
|
} | {
|
|
194
172
|
kind: 'listed';
|
|
195
173
|
entry: ListedConversation;
|
|
174
|
+
} | {
|
|
175
|
+
kind: 'agent';
|
|
176
|
+
agent: ListedAgent;
|
|
196
177
|
} | {
|
|
197
178
|
kind: 'unlisted';
|
|
198
179
|
conversation: string;
|
|
199
180
|
};
|
|
181
|
+
export type AgentEnvironment = {
|
|
182
|
+
identity: string;
|
|
183
|
+
name: string;
|
|
184
|
+
state: 'online' | 'offline';
|
|
185
|
+
};
|
|
200
186
|
export type ListedAgent = {
|
|
201
|
-
|
|
187
|
+
id: string;
|
|
202
188
|
name: string;
|
|
203
|
-
|
|
189
|
+
revision: number;
|
|
190
|
+
environment: string;
|
|
191
|
+
environment_name: string;
|
|
192
|
+
environment_connected: boolean;
|
|
193
|
+
launch_directory: string;
|
|
194
|
+
cli: string;
|
|
195
|
+
model: string | null;
|
|
196
|
+
effort: string | null;
|
|
197
|
+
mode: string | null;
|
|
198
|
+
base_instructions: string;
|
|
199
|
+
in_telegram: boolean;
|
|
200
|
+
created: string;
|
|
201
|
+
retired_at: string | null;
|
|
204
202
|
};
|
|
205
203
|
export type ConversationStream = {
|
|
206
204
|
replicate(conversations: readonly string[]): void;
|
|
207
205
|
hold(cursor: string | null): void;
|
|
208
206
|
observe(notify: (event: ConversationEvent) => void): () => void;
|
|
209
|
-
agents?(): Promise<readonly ListedAgent[] | null>;
|
|
210
207
|
history?(request: ConversationHistoryRequest): Promise<ActionResult>;
|
|
211
208
|
};
|
|
212
209
|
export type ActionDeclaration = {
|
|
@@ -227,7 +224,6 @@ export type HistoryRetention = {
|
|
|
227
224
|
};
|
|
228
225
|
export type Retention = {
|
|
229
226
|
history: HistoryRetention;
|
|
230
|
-
outcome: number;
|
|
231
227
|
refreshHorizon: number;
|
|
232
228
|
};
|
|
233
229
|
export type Discovery = {
|
|
@@ -240,6 +236,7 @@ export type Discovery = {
|
|
|
240
236
|
};
|
|
241
237
|
export type TransportUncertainty = {
|
|
242
238
|
kind: 'transport-uncertainty';
|
|
239
|
+
failure?: unknown;
|
|
243
240
|
};
|
|
244
241
|
export type RoomNotReadable = {
|
|
245
242
|
kind: 'room-not-readable';
|
|
@@ -283,25 +280,17 @@ export type BinaryFile = {
|
|
|
283
280
|
mediaType: string;
|
|
284
281
|
sha256: string;
|
|
285
282
|
};
|
|
286
|
-
export type HeldFile = {
|
|
287
|
-
readonly path: string;
|
|
288
|
-
readonly revision: string;
|
|
289
|
-
};
|
|
290
|
-
export type HeldContent = {
|
|
291
|
-
files(after: string | null, limit: number): Promise<readonly HeldFile[]>;
|
|
292
|
-
contents(paths: readonly string[]): Promise<ReadonlyMap<string, {
|
|
293
|
-
readonly content: string;
|
|
294
|
-
readonly revision: string;
|
|
295
|
-
}>>;
|
|
296
|
-
};
|
|
297
283
|
export type BootstrapRequest = {
|
|
298
284
|
locator: string;
|
|
299
285
|
selection: string;
|
|
300
286
|
pageToken?: PageToken;
|
|
301
|
-
held?: HeldContent;
|
|
302
287
|
arriving?: (bytes: number) => void;
|
|
303
288
|
signal?: AbortSignal;
|
|
304
289
|
};
|
|
290
|
+
export type BootstrapPart = {
|
|
291
|
+
readonly id: string;
|
|
292
|
+
readonly bytes: number;
|
|
293
|
+
};
|
|
305
294
|
export type BootstrapInventory = {
|
|
306
295
|
readonly bytes: number;
|
|
307
296
|
};
|
|
@@ -313,17 +302,23 @@ export type BootstrapPage = {
|
|
|
313
302
|
roomVersion: string;
|
|
314
303
|
models?: RoomModels;
|
|
315
304
|
documents: Readonly<Record<string, string>>;
|
|
305
|
+
facts: Readonly<Record<string, SavedFacts>>;
|
|
316
306
|
revisions: Readonly<Record<string, string>>;
|
|
317
307
|
fileIds?: Readonly<Record<string, string>>;
|
|
308
|
+
created?: Readonly<Record<string, string>>;
|
|
318
309
|
changes: Readonly<Record<string, HeadChange>>;
|
|
319
310
|
binaryFiles: Readonly<Record<string, BinaryFile>>;
|
|
320
311
|
folders?: readonly string[];
|
|
321
312
|
pageToken?: PageToken;
|
|
313
|
+
parts?: readonly BootstrapPart[];
|
|
322
314
|
bytes?: number;
|
|
323
315
|
};
|
|
316
|
+
export type NotReady = {
|
|
317
|
+
kind: 'not-ready';
|
|
318
|
+
};
|
|
324
319
|
export type BootstrapResult = BootstrapPage | {
|
|
325
320
|
kind: 'beyond-horizon';
|
|
326
|
-
} | AdapterFailure;
|
|
321
|
+
} | NotReady | AdapterFailure;
|
|
327
322
|
export type RefreshRequest = {
|
|
328
323
|
locator: string;
|
|
329
324
|
selection: string;
|
|
@@ -335,8 +330,10 @@ export type RefreshPage = {
|
|
|
335
330
|
roomVersion: string;
|
|
336
331
|
models?: RoomModels;
|
|
337
332
|
documents: Readonly<Record<string, string>>;
|
|
333
|
+
facts: Readonly<Record<string, SavedFacts>>;
|
|
338
334
|
revisions: Readonly<Record<string, string>>;
|
|
339
335
|
fileIds?: Readonly<Record<string, string>>;
|
|
336
|
+
created?: Readonly<Record<string, string>>;
|
|
340
337
|
changes: Readonly<Record<string, HeadChange>>;
|
|
341
338
|
binaryFiles: Readonly<Record<string, BinaryFile>>;
|
|
342
339
|
removals: readonly string[];
|
|
@@ -374,27 +371,18 @@ export type AcceptedRoom = {
|
|
|
374
371
|
};
|
|
375
372
|
export type MutationResult = (AcceptedRoom & {
|
|
376
373
|
kind: 'accepted';
|
|
377
|
-
author?: string;
|
|
378
|
-
time?: string;
|
|
379
374
|
destination?: AcceptedRoom;
|
|
380
375
|
}) | (ProviderRefusal & {
|
|
381
376
|
kind: 'conflicted';
|
|
382
|
-
roomVersion?: string;
|
|
383
377
|
affected: Readonly<Record<string, string>>;
|
|
384
378
|
}) | (ProviderRefusal & {
|
|
385
379
|
kind: 'rejected';
|
|
386
380
|
affected: Readonly<Record<string, string>>;
|
|
387
381
|
}) | RetryableRefusal | {
|
|
388
382
|
kind: 'write-halted';
|
|
389
|
-
} | {
|
|
390
|
-
kind: 'expired';
|
|
391
|
-
restored?: true;
|
|
392
383
|
} | AdapterFailure;
|
|
393
384
|
export type HistoryAuthor = {
|
|
394
|
-
kind: 'user';
|
|
395
|
-
id: string;
|
|
396
|
-
} | {
|
|
397
|
-
kind: 'site' | 'inbox' | 'app';
|
|
385
|
+
kind: 'user' | 'site' | 'inbox' | 'app';
|
|
398
386
|
id: string;
|
|
399
387
|
name: string;
|
|
400
388
|
};
|
|
@@ -470,17 +458,34 @@ export type ActionResult = {
|
|
|
470
458
|
kind: 'action';
|
|
471
459
|
result: unknown;
|
|
472
460
|
at?: RoomVersionAt;
|
|
461
|
+
} | (ProviderRefusal & {
|
|
462
|
+
kind: 'rejected';
|
|
463
|
+
reset?: string;
|
|
464
|
+
}) | AdapterFailure;
|
|
465
|
+
export type SearchHit = {
|
|
466
|
+
room: string;
|
|
467
|
+
path: string;
|
|
468
|
+
line?: number;
|
|
469
|
+
snippet?: string;
|
|
470
|
+
};
|
|
471
|
+
export type SearchAsk = {
|
|
472
|
+
text: string;
|
|
473
|
+
rooms: readonly string[] | null;
|
|
474
|
+
};
|
|
475
|
+
export type SearchAnswer = {
|
|
476
|
+
kind: 'found';
|
|
477
|
+
documents: readonly SearchHit[];
|
|
473
478
|
} | (ProviderRefusal & {
|
|
474
479
|
kind: 'rejected';
|
|
475
480
|
}) | AdapterFailure;
|
|
476
481
|
export type HeldRoom = {
|
|
477
482
|
locator: string;
|
|
478
|
-
roomVersion: string;
|
|
483
|
+
roomVersion: string | null;
|
|
479
484
|
};
|
|
480
485
|
export type RoomChange = {
|
|
481
486
|
kind: 'room-change';
|
|
482
487
|
locator: string;
|
|
483
|
-
from: string;
|
|
488
|
+
from: string | null;
|
|
484
489
|
roomVersion: string;
|
|
485
490
|
read(): Promise<RefreshPage>;
|
|
486
491
|
};
|
|
@@ -499,6 +504,7 @@ export type RoomStreamEvent = {
|
|
|
499
504
|
kind: 'closed';
|
|
500
505
|
revoked: boolean;
|
|
501
506
|
lost: boolean;
|
|
507
|
+
authorityChanged: boolean;
|
|
502
508
|
} | {
|
|
503
509
|
kind: 'caught-up';
|
|
504
510
|
expired: readonly string[];
|
|
@@ -507,10 +513,14 @@ export type RoomStream = {
|
|
|
507
513
|
hold(rooms: readonly HeldRoom[]): void;
|
|
508
514
|
observe(notify: (event: RoomStreamEvent) => void): () => void;
|
|
509
515
|
};
|
|
516
|
+
export type PathRule = (path: string) => boolean;
|
|
510
517
|
export type Adapter = {
|
|
511
518
|
readonly localSaves?: true;
|
|
512
|
-
readonly roomTypes?:
|
|
513
|
-
readonly
|
|
519
|
+
readonly roomTypes?: VerifiedModel;
|
|
520
|
+
readonly typedPaths?: readonly TypedPath[];
|
|
521
|
+
readonly pathRule?: PathRule;
|
|
522
|
+
readonly unkeptReads?: readonly string[];
|
|
523
|
+
readonly leadingReads?: readonly string[];
|
|
514
524
|
authorize(): Promise<Authorization>;
|
|
515
525
|
discover?(authorization: Authorization): Promise<DiscoverResult>;
|
|
516
526
|
bootstrap(authorization: Authorization, request: BootstrapRequest): Promise<BootstrapResult>;
|
|
@@ -521,11 +531,11 @@ export type Adapter = {
|
|
|
521
531
|
link(authorization: Authorization, request: BinaryRequest): Promise<BinaryLinkResult>;
|
|
522
532
|
attach(authorization: Authorization, request: AttachRequest): Promise<AttachResult>;
|
|
523
533
|
action(authorization: Authorization, request: ActionRequest): Promise<ActionResult>;
|
|
534
|
+
search?(authorization: Authorization, request: SearchAsk): Promise<SearchAnswer>;
|
|
524
535
|
reached(locator: string, roomVersion: string, target: string): boolean;
|
|
525
536
|
follows(locator: string, roomVersion: string, next: string): boolean;
|
|
526
537
|
roomStream?: RoomStream;
|
|
527
538
|
conversations?: ConversationStream;
|
|
528
539
|
serviceMode?: ServiceModeSignal;
|
|
529
540
|
};
|
|
530
|
-
export {};
|
|
531
541
|
//# sourceMappingURL=adapter.d.ts.map
|