@agentshouse/mdruntime 0.1.0-c069136dcb4e8 → 0.1.0-c076b00ebf42a
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 +108 -85
- 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 +29 -22
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +36 -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 +286 -336
- package/dist/connection.d.ts +5 -142
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +110 -4970
- 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 +65 -44
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +999 -881
- 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 -7
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +77 -41
- 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 -36
- 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 +1 -1
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +10 -13
- package/dist/memory.d.ts +15 -6
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +178 -89
- 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 +233 -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 +14 -210
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -505
- package/dist/questions.d.ts +29 -0
- package/dist/questions.d.ts.map +1 -0
- package/dist/questions.js +115 -0
- package/dist/queue.d.ts +40 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +450 -0
- package/dist/reach.d.ts +16 -15
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +248 -147
- 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 +2 -1
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +31 -3
- 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 -144
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +171 -364
- 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 +58 -9
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +21 -5
- package/package.json +3 -2
- package/dist/attempt.d.ts +0 -16
- package/dist/attempt.d.ts.map +0 -1
- package/dist/attempt.js +0 -70
- package/dist/fence.d.ts +0 -6
- package/dist/fence.d.ts.map +0 -1
- package/dist/fence.js +0 -10
- package/dist/fulltext.d.ts +0 -27
- package/dist/fulltext.d.ts.map +0 -1
- package/dist/fulltext.js +0 -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 = '
|
|
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;
|
|
@@ -161,6 +141,10 @@ export type ConversationEvent = {
|
|
|
161
141
|
kind: 'starting';
|
|
162
142
|
conversation: string;
|
|
163
143
|
step: string | null;
|
|
144
|
+
} | {
|
|
145
|
+
kind: 'state';
|
|
146
|
+
conversation: string;
|
|
147
|
+
state: SessionState | null;
|
|
164
148
|
} | {
|
|
165
149
|
kind: 'link';
|
|
166
150
|
conversation: string;
|
|
@@ -168,6 +152,7 @@ export type ConversationEvent = {
|
|
|
168
152
|
} | {
|
|
169
153
|
kind: 'deliveries';
|
|
170
154
|
conversation: string;
|
|
155
|
+
waiting: readonly string[];
|
|
171
156
|
unknown: readonly string[];
|
|
172
157
|
} | {
|
|
173
158
|
kind: 'accepted-message';
|
|
@@ -178,23 +163,48 @@ export type ConversationEvent = {
|
|
|
178
163
|
conversation: string;
|
|
179
164
|
} | {
|
|
180
165
|
kind: 'list';
|
|
166
|
+
agents: readonly ListedAgent[];
|
|
181
167
|
entries: readonly ListedConversation[];
|
|
168
|
+
whole: boolean;
|
|
169
|
+
more: boolean;
|
|
170
|
+
cursor: string | null;
|
|
182
171
|
} | {
|
|
183
172
|
kind: 'listed';
|
|
184
173
|
entry: ListedConversation;
|
|
174
|
+
} | {
|
|
175
|
+
kind: 'agent';
|
|
176
|
+
agent: ListedAgent;
|
|
185
177
|
} | {
|
|
186
178
|
kind: 'unlisted';
|
|
187
179
|
conversation: string;
|
|
188
180
|
};
|
|
181
|
+
export type AgentEnvironment = {
|
|
182
|
+
identity: string;
|
|
183
|
+
name: string;
|
|
184
|
+
state: 'online' | 'offline';
|
|
185
|
+
};
|
|
189
186
|
export type ListedAgent = {
|
|
190
|
-
|
|
187
|
+
id: string;
|
|
191
188
|
name: string;
|
|
192
|
-
|
|
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;
|
|
193
202
|
};
|
|
194
203
|
export type ConversationStream = {
|
|
195
204
|
replicate(conversations: readonly string[]): void;
|
|
205
|
+
hold(cursor: string | null): void;
|
|
196
206
|
observe(notify: (event: ConversationEvent) => void): () => void;
|
|
197
|
-
|
|
207
|
+
history?(request: ConversationHistoryRequest): Promise<ActionResult>;
|
|
198
208
|
};
|
|
199
209
|
export type ActionDeclaration = {
|
|
200
210
|
name: string;
|
|
@@ -214,7 +224,6 @@ export type HistoryRetention = {
|
|
|
214
224
|
};
|
|
215
225
|
export type Retention = {
|
|
216
226
|
history: HistoryRetention;
|
|
217
|
-
outcome: number;
|
|
218
227
|
refreshHorizon: number;
|
|
219
228
|
};
|
|
220
229
|
export type Discovery = {
|
|
@@ -224,13 +233,10 @@ export type Discovery = {
|
|
|
224
233
|
providerLimits: readonly ProviderLimit[];
|
|
225
234
|
retention: Retention;
|
|
226
235
|
member?: Member;
|
|
227
|
-
covered?: readonly string[];
|
|
228
|
-
};
|
|
229
|
-
export type DiscoveryScope = {
|
|
230
|
-
readonly authorities: readonly string[];
|
|
231
236
|
};
|
|
232
237
|
export type TransportUncertainty = {
|
|
233
238
|
kind: 'transport-uncertainty';
|
|
239
|
+
failure?: unknown;
|
|
234
240
|
};
|
|
235
241
|
export type RoomNotReadable = {
|
|
236
242
|
kind: 'room-not-readable';
|
|
@@ -274,25 +280,17 @@ export type BinaryFile = {
|
|
|
274
280
|
mediaType: string;
|
|
275
281
|
sha256: string;
|
|
276
282
|
};
|
|
277
|
-
export type HeldFile = {
|
|
278
|
-
readonly path: string;
|
|
279
|
-
readonly revision: string;
|
|
280
|
-
};
|
|
281
|
-
export type HeldContent = {
|
|
282
|
-
files(after: string | null, limit: number): Promise<readonly HeldFile[]>;
|
|
283
|
-
contents(paths: readonly string[]): Promise<ReadonlyMap<string, {
|
|
284
|
-
readonly content: string;
|
|
285
|
-
readonly revision: string;
|
|
286
|
-
}>>;
|
|
287
|
-
};
|
|
288
283
|
export type BootstrapRequest = {
|
|
289
284
|
locator: string;
|
|
290
285
|
selection: string;
|
|
291
286
|
pageToken?: PageToken;
|
|
292
|
-
held?: HeldContent;
|
|
293
287
|
arriving?: (bytes: number) => void;
|
|
294
288
|
signal?: AbortSignal;
|
|
295
289
|
};
|
|
290
|
+
export type BootstrapPart = {
|
|
291
|
+
readonly id: string;
|
|
292
|
+
readonly bytes: number;
|
|
293
|
+
};
|
|
296
294
|
export type BootstrapInventory = {
|
|
297
295
|
readonly bytes: number;
|
|
298
296
|
};
|
|
@@ -304,17 +302,23 @@ export type BootstrapPage = {
|
|
|
304
302
|
roomVersion: string;
|
|
305
303
|
models?: RoomModels;
|
|
306
304
|
documents: Readonly<Record<string, string>>;
|
|
305
|
+
facts: Readonly<Record<string, SavedFacts>>;
|
|
307
306
|
revisions: Readonly<Record<string, string>>;
|
|
308
307
|
fileIds?: Readonly<Record<string, string>>;
|
|
308
|
+
created?: Readonly<Record<string, string>>;
|
|
309
309
|
changes: Readonly<Record<string, HeadChange>>;
|
|
310
310
|
binaryFiles: Readonly<Record<string, BinaryFile>>;
|
|
311
311
|
folders?: readonly string[];
|
|
312
312
|
pageToken?: PageToken;
|
|
313
|
+
parts?: readonly BootstrapPart[];
|
|
313
314
|
bytes?: number;
|
|
314
315
|
};
|
|
316
|
+
export type NotReady = {
|
|
317
|
+
kind: 'not-ready';
|
|
318
|
+
};
|
|
315
319
|
export type BootstrapResult = BootstrapPage | {
|
|
316
320
|
kind: 'beyond-horizon';
|
|
317
|
-
} | AdapterFailure;
|
|
321
|
+
} | NotReady | AdapterFailure;
|
|
318
322
|
export type RefreshRequest = {
|
|
319
323
|
locator: string;
|
|
320
324
|
selection: string;
|
|
@@ -326,8 +330,10 @@ export type RefreshPage = {
|
|
|
326
330
|
roomVersion: string;
|
|
327
331
|
models?: RoomModels;
|
|
328
332
|
documents: Readonly<Record<string, string>>;
|
|
333
|
+
facts: Readonly<Record<string, SavedFacts>>;
|
|
329
334
|
revisions: Readonly<Record<string, string>>;
|
|
330
335
|
fileIds?: Readonly<Record<string, string>>;
|
|
336
|
+
created?: Readonly<Record<string, string>>;
|
|
331
337
|
changes: Readonly<Record<string, HeadChange>>;
|
|
332
338
|
binaryFiles: Readonly<Record<string, BinaryFile>>;
|
|
333
339
|
removals: readonly string[];
|
|
@@ -365,27 +371,18 @@ export type AcceptedRoom = {
|
|
|
365
371
|
};
|
|
366
372
|
export type MutationResult = (AcceptedRoom & {
|
|
367
373
|
kind: 'accepted';
|
|
368
|
-
author?: string;
|
|
369
|
-
time?: string;
|
|
370
374
|
destination?: AcceptedRoom;
|
|
371
375
|
}) | (ProviderRefusal & {
|
|
372
376
|
kind: 'conflicted';
|
|
373
|
-
roomVersion?: string;
|
|
374
377
|
affected: Readonly<Record<string, string>>;
|
|
375
378
|
}) | (ProviderRefusal & {
|
|
376
379
|
kind: 'rejected';
|
|
377
380
|
affected: Readonly<Record<string, string>>;
|
|
378
381
|
}) | RetryableRefusal | {
|
|
379
382
|
kind: 'write-halted';
|
|
380
|
-
} | {
|
|
381
|
-
kind: 'expired';
|
|
382
|
-
restored?: true;
|
|
383
383
|
} | AdapterFailure;
|
|
384
384
|
export type HistoryAuthor = {
|
|
385
|
-
kind: 'user';
|
|
386
|
-
id: string;
|
|
387
|
-
} | {
|
|
388
|
-
kind: 'site' | 'inbox' | 'app';
|
|
385
|
+
kind: 'user' | 'site' | 'inbox' | 'app';
|
|
389
386
|
id: string;
|
|
390
387
|
name: string;
|
|
391
388
|
};
|
|
@@ -461,45 +458,71 @@ export type ActionResult = {
|
|
|
461
458
|
kind: 'action';
|
|
462
459
|
result: unknown;
|
|
463
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[];
|
|
464
478
|
} | (ProviderRefusal & {
|
|
465
479
|
kind: 'rejected';
|
|
466
480
|
}) | AdapterFailure;
|
|
467
481
|
export type HeldRoom = {
|
|
468
482
|
locator: string;
|
|
469
|
-
roomVersion: string;
|
|
483
|
+
roomVersion: string | null;
|
|
470
484
|
};
|
|
471
485
|
export type RoomChange = {
|
|
472
486
|
kind: 'room-change';
|
|
473
487
|
locator: string;
|
|
474
|
-
from: string;
|
|
488
|
+
from: string | null;
|
|
475
489
|
roomVersion: string;
|
|
476
490
|
read(): Promise<RefreshPage>;
|
|
477
491
|
};
|
|
492
|
+
export type AuthorityChange = {
|
|
493
|
+
kind: 'authority-changed';
|
|
494
|
+
rooms: readonly DiscoveredRoom[];
|
|
495
|
+
left: readonly string[];
|
|
496
|
+
member?: Member;
|
|
497
|
+
};
|
|
478
498
|
export type RoomStreamEvent = {
|
|
479
499
|
kind: 'opened';
|
|
500
|
+
} | {
|
|
501
|
+
kind: 'discovered';
|
|
502
|
+
discovery: Discovery;
|
|
480
503
|
} | {
|
|
481
504
|
kind: 'closed';
|
|
482
505
|
revoked: boolean;
|
|
483
506
|
lost: boolean;
|
|
507
|
+
authorityChanged: boolean;
|
|
484
508
|
} | {
|
|
485
|
-
kind: '
|
|
509
|
+
kind: 'caught-up';
|
|
486
510
|
expired: readonly string[];
|
|
487
|
-
} |
|
|
488
|
-
kind: 'authority-changed';
|
|
489
|
-
scope?: DiscoveryScope;
|
|
490
|
-
} | RoomChange;
|
|
511
|
+
} | AuthorityChange | RoomChange;
|
|
491
512
|
export type RoomStream = {
|
|
492
513
|
hold(rooms: readonly HeldRoom[]): void;
|
|
493
|
-
reopen(): void;
|
|
494
514
|
observe(notify: (event: RoomStreamEvent) => void): () => void;
|
|
495
515
|
};
|
|
516
|
+
export type PathRule = (path: string) => boolean;
|
|
496
517
|
export type Adapter = {
|
|
497
518
|
readonly localSaves?: true;
|
|
498
|
-
readonly
|
|
499
|
-
readonly
|
|
500
|
-
readonly
|
|
519
|
+
readonly roomTypes?: VerifiedModel;
|
|
520
|
+
readonly typedPaths?: readonly TypedPath[];
|
|
521
|
+
readonly pathRule?: PathRule;
|
|
522
|
+
readonly unkeptReads?: readonly string[];
|
|
523
|
+
readonly leadingReads?: readonly string[];
|
|
501
524
|
authorize(): Promise<Authorization>;
|
|
502
|
-
discover(authorization: Authorization
|
|
525
|
+
discover?(authorization: Authorization): Promise<DiscoverResult>;
|
|
503
526
|
bootstrap(authorization: Authorization, request: BootstrapRequest): Promise<BootstrapResult>;
|
|
504
527
|
refresh?(authorization: Authorization, request: RefreshRequest): Promise<RefreshResult>;
|
|
505
528
|
mutate(authorization: Authorization, request: MutationRequest, keep: (upload: unknown) => Promise<void>): Promise<MutationResult>;
|
|
@@ -508,11 +531,11 @@ export type Adapter = {
|
|
|
508
531
|
link(authorization: Authorization, request: BinaryRequest): Promise<BinaryLinkResult>;
|
|
509
532
|
attach(authorization: Authorization, request: AttachRequest): Promise<AttachResult>;
|
|
510
533
|
action(authorization: Authorization, request: ActionRequest): Promise<ActionResult>;
|
|
534
|
+
search?(authorization: Authorization, request: SearchAsk): Promise<SearchAnswer>;
|
|
511
535
|
reached(locator: string, roomVersion: string, target: string): boolean;
|
|
512
536
|
follows(locator: string, roomVersion: string, next: string): boolean;
|
|
513
537
|
roomStream?: RoomStream;
|
|
514
538
|
conversations?: ConversationStream;
|
|
515
539
|
serviceMode?: ServiceModeSignal;
|
|
516
540
|
};
|
|
517
|
-
export {};
|
|
518
541
|
//# sourceMappingURL=adapter.d.ts.map
|