@agentshouse/mdruntime 0.1.0-ca1eff92bbe73 → 0.1.0-ca4dc698bd0c4
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/AGENTS.md +265 -209
- package/README.md +13 -3
- package/dist/acquisition.d.ts +14 -0
- package/dist/acquisition.d.ts.map +1 -0
- package/dist/acquisition.js +24 -0
- package/dist/adapter.d.ts +76 -17
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attempt.d.ts +16 -0
- package/dist/attempt.d.ts.map +1 -0
- package/dist/attempt.js +70 -0
- package/dist/binary.d.ts +23 -0
- package/dist/binary.d.ts.map +1 -0
- package/dist/binary.js +8 -0
- package/dist/bootstrap.d.ts +17 -5
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +109 -37
- package/dist/change-set.d.ts +2 -0
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +48 -16
- package/dist/change.d.ts +15 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +26 -1
- package/dist/chat/acts.d.ts +33 -0
- package/dist/chat/acts.d.ts.map +1 -0
- package/dist/chat/acts.js +36 -0
- package/dist/chat/context.d.ts +3 -0
- package/dist/chat/context.d.ts.map +1 -0
- package/dist/chat/context.js +10 -0
- package/dist/chat/input.d.ts +9 -0
- package/dist/chat/input.d.ts.map +1 -0
- package/dist/chat/input.js +99 -0
- package/dist/chat/kit.d.ts +60 -0
- package/dist/chat/kit.d.ts.map +1 -0
- package/dist/chat/kit.js +123 -0
- package/dist/chat/lasting.d.ts +6 -0
- package/dist/chat/lasting.d.ts.map +1 -0
- package/dist/chat/lasting.js +19 -0
- package/dist/chat/list.d.ts +26 -0
- package/dist/chat/list.d.ts.map +1 -0
- package/dist/chat/list.js +62 -0
- package/dist/chat/markdown.d.ts +20 -0
- package/dist/chat/markdown.d.ts.map +1 -0
- package/dist/chat/markdown.js +188 -0
- package/dist/chat/message.d.ts +6 -0
- package/dist/chat/message.d.ts.map +1 -0
- package/dist/chat/message.js +192 -0
- package/dist/chat/messages.d.ts +21 -0
- package/dist/chat/messages.d.ts.map +1 -0
- package/dist/chat/messages.js +151 -0
- package/dist/chat/name.d.ts +6 -0
- package/dist/chat/name.d.ts.map +1 -0
- package/dist/chat/name.js +37 -0
- package/dist/chat/opened.d.ts +11 -0
- package/dist/chat/opened.d.ts.map +1 -0
- package/dist/chat/opened.js +17 -0
- package/dist/chat/overlay.d.ts +31 -0
- package/dist/chat/overlay.d.ts.map +1 -0
- package/dist/chat/overlay.js +97 -0
- package/dist/chat/parts.d.ts +57 -0
- package/dist/chat/parts.d.ts.map +1 -0
- package/dist/chat/parts.js +119 -0
- package/dist/chat/process.d.ts +20 -0
- package/dist/chat/process.d.ts.map +1 -0
- package/dist/chat/process.js +32 -0
- package/dist/chat/provider.d.ts +63 -0
- package/dist/chat/provider.d.ts.map +1 -0
- package/dist/chat/provider.js +620 -0
- package/dist/chat/question.d.ts +9 -0
- package/dist/chat/question.d.ts.map +1 -0
- package/dist/chat/question.js +80 -0
- package/dist/chat/questions.d.ts +31 -0
- package/dist/chat/questions.d.ts.map +1 -0
- package/dist/chat/questions.js +111 -0
- package/dist/chat/read.d.ts +5 -0
- package/dist/chat/read.d.ts.map +1 -0
- package/dist/chat/read.js +13 -0
- package/dist/chat/ready.d.ts +33 -0
- package/dist/chat/ready.d.ts.map +1 -0
- package/dist/chat/ready.js +91 -0
- package/dist/chat/style.d.ts +4 -0
- package/dist/chat/style.d.ts.map +1 -0
- package/dist/chat/style.js +302 -0
- package/dist/chat.d.ts +14 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +8 -0
- package/dist/client.d.ts +23 -11
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +67 -16
- package/dist/collection.d.ts +21 -12
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +271 -23
- package/dist/connection.d.ts +41 -15
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +1631 -378
- package/dist/conversation.d.ts +24 -10
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +307 -136
- package/dist/durability.d.ts +7 -1
- package/dist/durability.d.ts.map +1 -1
- package/dist/entry.d.ts +17 -0
- package/dist/entry.d.ts.map +1 -0
- package/dist/entry.js +156 -0
- package/dist/expectation.d.ts +21 -0
- package/dist/expectation.d.ts.map +1 -0
- package/dist/expectation.js +70 -0
- package/dist/failure.d.ts +13 -0
- package/dist/failure.d.ts.map +1 -0
- package/dist/failure.js +19 -0
- package/dist/fence.d.ts +6 -0
- package/dist/fence.d.ts.map +1 -0
- package/dist/fence.js +10 -0
- package/dist/host.d.ts +13 -2
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +48 -14
- package/dist/identity.d.ts +5 -0
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +19 -1
- package/dist/index.d.ts +14 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/memory.d.ts +6 -3
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +70 -22
- package/dist/model.d.ts +4 -2
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +9 -0
- package/dist/observation.d.ts +5 -2
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +22 -11
- package/dist/open.d.ts +2 -0
- package/dist/open.d.ts.map +1 -0
- package/dist/open.js +1 -0
- package/dist/outcome.d.ts +32 -3
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +42 -1
- package/dist/overlay.d.ts +15 -3
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +94 -77
- package/dist/query.d.ts +32 -3
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +5 -31
- package/dist/reach.d.ts +8 -2
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +60 -24
- package/dist/react.d.ts +28 -17
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +8 -6
- package/dist/read-side.d.ts +13 -6
- package/dist/read-side.d.ts.map +1 -1
- package/dist/read-side.js +291 -85
- package/dist/readiness.d.ts +53 -0
- package/dist/readiness.d.ts.map +1 -0
- package/dist/readiness.js +33 -0
- package/dist/recovery.d.ts +25 -0
- package/dist/recovery.d.ts.map +1 -0
- package/dist/recovery.js +197 -0
- package/dist/refresh.d.ts +10 -0
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +43 -38
- package/dist/replica.d.ts +8 -5
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +115 -67
- package/dist/room-draft.d.ts +26 -9
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +132 -23
- package/dist/rows.d.ts +8 -13
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +12 -14
- package/dist/save.d.ts +31 -1
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +376 -45
- package/dist/search.d.ts +31 -8
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +108 -45
- package/dist/shared.d.ts +11 -0
- package/dist/shared.d.ts.map +1 -0
- package/dist/shared.js +368 -0
- package/dist/status.d.ts +6 -2
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +0 -8
- package/dist/store.d.ts +73 -17
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +531 -198
- package/dist/turn.d.ts +7 -0
- package/dist/turn.d.ts.map +1 -0
- package/dist/turn.js +45 -0
- package/dist/wire.d.ts +9 -3
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +17 -2
- package/package.json +26 -14
- package/dist/attachment.d.ts +0 -3
- package/dist/attachment.d.ts.map +0 -1
- package/dist/attachment.js +0 -8
package/dist/memory.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { ModelResult } from './model.js';
|
|
2
|
-
import { type AcceptedMessage, type ActionResult, type Adapter, type Capability, type ConversationAction, type ConversationEvent, type DiscoveredRoom, type HeadChange, type ListedConversation, type ProviderLimit, type Retention, type
|
|
2
|
+
import { type AcceptedMessage, type ActionResult, type Adapter, type BinaryFile, type Capability, type ConversationAction, type ConversationEvent, type DiscoveredRoom, type HeadChange, type ListedConversation, type Member, type ProviderLimit, type Retention, type AcquiredDemand, type ServiceMode } from './adapter.js';
|
|
3
3
|
export type MemoryRoom = DiscoveredRoom & {
|
|
4
4
|
model?: ModelResult;
|
|
5
5
|
selectionModel?: ModelResult;
|
|
6
6
|
documents?: Readonly<Record<string, string>>;
|
|
7
7
|
revisions?: Readonly<Record<string, string>>;
|
|
8
8
|
changes?: Readonly<Record<string, HeadChange>>;
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
binaryFiles?: Readonly<Record<string, BinaryFile>>;
|
|
10
|
+
blobs?: Readonly<Record<string, Blob>>;
|
|
11
11
|
};
|
|
12
12
|
export type MemoryConversation = {
|
|
13
13
|
conversation: string;
|
|
@@ -23,7 +23,9 @@ export type MemoryAdapterOptions = {
|
|
|
23
23
|
capabilities?: readonly Capability[];
|
|
24
24
|
providerLimits?: readonly ProviderLimit[];
|
|
25
25
|
retention?: Retention;
|
|
26
|
+
member?: Member;
|
|
26
27
|
unopened?: boolean;
|
|
28
|
+
exhaustiveDiscovery?: true;
|
|
27
29
|
};
|
|
28
30
|
export type MemoryAdapter = Adapter & {
|
|
29
31
|
setRooms(rooms: readonly MemoryRoom[]): void;
|
|
@@ -39,6 +41,7 @@ export type MemoryAdapter = Adapter & {
|
|
|
39
41
|
notifyConversation(event: ConversationEvent): void;
|
|
40
42
|
notifyServiceMode(mode: ServiceMode): void;
|
|
41
43
|
heldRooms(): readonly string[];
|
|
44
|
+
heldDemand(): AcquiredDemand | null;
|
|
42
45
|
replicatedConversations(): readonly string[];
|
|
43
46
|
};
|
|
44
47
|
export declare function createMemoryAdapter(options?: MemoryAdapterOptions): MemoryAdapter;
|
package/dist/memory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EACL,KAAK,eAAe,EAEpB,KAAK,YAAY,EACjB,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
|
package/dist/memory.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { sameChange } from './overlay.js';
|
|
2
2
|
const FIXTURE_RETENTION = {
|
|
3
3
|
history: { kind: 'duration', seconds: 1 },
|
|
4
|
-
outcome:
|
|
4
|
+
outcome: 604_800,
|
|
5
5
|
refreshHorizon: 1,
|
|
6
6
|
};
|
|
7
7
|
function declaredRetention(value) {
|
|
@@ -55,8 +55,10 @@ export function createMemoryAdapter(options = {}) {
|
|
|
55
55
|
const scripted = new Map();
|
|
56
56
|
const unsealed = new Map();
|
|
57
57
|
const sealed = new Set();
|
|
58
|
+
const sentTurns = new Map();
|
|
58
59
|
const historyPageSize = options.historyPageSize;
|
|
59
60
|
let held = [];
|
|
61
|
+
let heldDemand = null;
|
|
60
62
|
let expiring = [];
|
|
61
63
|
let replicated = [];
|
|
62
64
|
let issued = 0;
|
|
@@ -107,29 +109,30 @@ export function createMemoryAdapter(options = {}) {
|
|
|
107
109
|
providerOwnedPaths: room.providerOwnedPaths,
|
|
108
110
|
};
|
|
109
111
|
}
|
|
110
|
-
function page(room,
|
|
112
|
+
function page(room, after) {
|
|
111
113
|
const paths = Object.keys(room.documents ?? {}).sort();
|
|
114
|
+
const opening = after === undefined;
|
|
115
|
+
const from = opening ? 0 : paths.filter((path) => path <= after).length;
|
|
112
116
|
const size = pageSize ?? paths.length;
|
|
113
117
|
const taken = paths.slice(from, from + size);
|
|
114
118
|
const next = from + taken.length;
|
|
115
|
-
const targets =
|
|
119
|
+
const targets = opening ? Object.keys(room.binaryFiles ?? {}) : [];
|
|
116
120
|
return {
|
|
117
121
|
kind: 'bootstrap',
|
|
118
122
|
roomVersion: room.roomVersion,
|
|
119
|
-
...(
|
|
123
|
+
...(opening ? { models: modelsOf(room) } : {}),
|
|
120
124
|
documents: named(room.documents ?? {}, taken),
|
|
121
|
-
revisions: named(room.revisions ?? {}, taken),
|
|
125
|
+
revisions: named(room.revisions ?? {}, [...taken, ...targets]),
|
|
122
126
|
changes: named(room.changes ?? {}, [...taken, ...targets]),
|
|
123
|
-
|
|
124
|
-
...(
|
|
125
|
-
...(next < paths.length ? { pageToken: String(next) } : {}),
|
|
127
|
+
binaryFiles: named(room.binaryFiles ?? {}, targets),
|
|
128
|
+
...(next < paths.length ? { pageToken: taken.at(-1) } : {}),
|
|
126
129
|
};
|
|
127
130
|
}
|
|
128
131
|
function advancement(room, from, at) {
|
|
129
132
|
const current = room.documents ?? {};
|
|
130
133
|
const previous = from.documents ?? {};
|
|
131
|
-
const currentTargets = new Set(room.
|
|
132
|
-
const previousTargets = new Set(from.
|
|
134
|
+
const currentTargets = new Set(Object.keys(room.binaryFiles ?? {}));
|
|
135
|
+
const previousTargets = new Set(Object.keys(from.binaryFiles ?? {}));
|
|
133
136
|
const headMoved = (path) => room.revisions?.[path] !== from.revisions?.[path] ||
|
|
134
137
|
!sameChange(room.changes?.[path], from.changes?.[path]);
|
|
135
138
|
const changed = Object.keys(current)
|
|
@@ -145,24 +148,21 @@ export function createMemoryAdapter(options = {}) {
|
|
|
145
148
|
const targets = opening
|
|
146
149
|
? [...currentTargets].filter((target) => !previousTargets.has(target) || headMoved(target))
|
|
147
150
|
: [];
|
|
148
|
-
const attachments = room.attachments ?? [];
|
|
149
|
-
const declared = opening && JSON.stringify(attachments) !== JSON.stringify(from.attachments ?? []);
|
|
150
151
|
const models = opening ? changedModels(room, from) : undefined;
|
|
151
152
|
return {
|
|
152
153
|
kind: 'net-advancement',
|
|
153
154
|
roomVersion: room.roomVersion,
|
|
154
155
|
...(models === undefined ? {} : { models }),
|
|
155
156
|
documents: named(current, taken),
|
|
156
|
-
revisions: named(room.revisions ?? {}, taken),
|
|
157
|
+
revisions: named(room.revisions ?? {}, [...taken, ...targets]),
|
|
157
158
|
changes: named(room.changes ?? {}, [...taken, ...targets]),
|
|
158
|
-
|
|
159
|
+
binaryFiles: named(room.binaryFiles ?? {}, targets),
|
|
159
160
|
removals: opening
|
|
160
161
|
? [
|
|
161
162
|
...Object.keys(previous).filter((path) => !(path in current) && !currentTargets.has(path)),
|
|
162
163
|
...[...previousTargets].filter((target) => !currentTargets.has(target) && !(target in current)),
|
|
163
164
|
].sort()
|
|
164
165
|
: [],
|
|
165
|
-
...(declared ? { attachments } : {}),
|
|
166
166
|
...(pageToken === undefined ? {} : { pageToken }),
|
|
167
167
|
};
|
|
168
168
|
}
|
|
@@ -183,7 +183,7 @@ export function createMemoryAdapter(options = {}) {
|
|
|
183
183
|
function historiesOf(input) {
|
|
184
184
|
const asked = input?.conversations;
|
|
185
185
|
if (!Array.isArray(asked))
|
|
186
|
-
return { kind: 'rejected', code: 'invalid_request', fields: {} };
|
|
186
|
+
return { kind: 'rejected', code: 'invalid_request', fields: {}, retryable: false };
|
|
187
187
|
const histories = [];
|
|
188
188
|
for (const entry of asked) {
|
|
189
189
|
const conversation = typeof entry.conversation === 'string' ? scripted.get(entry.conversation) : undefined;
|
|
@@ -211,21 +211,32 @@ export function createMemoryAdapter(options = {}) {
|
|
|
211
211
|
const named = typeof input.conversation === 'string' ? input.conversation : '';
|
|
212
212
|
const conversation = scripted.get(named);
|
|
213
213
|
if (conversation === undefined) {
|
|
214
|
-
return {
|
|
214
|
+
return {
|
|
215
|
+
kind: 'rejected',
|
|
216
|
+
code: 'unknown-conversation',
|
|
217
|
+
fields: { conversation: named },
|
|
218
|
+
retryable: false,
|
|
219
|
+
};
|
|
215
220
|
}
|
|
216
221
|
const outcome = conversation.outcomes?.[name];
|
|
217
222
|
if (outcome !== undefined)
|
|
218
223
|
return outcome;
|
|
219
224
|
if (name === 'conversation.send') {
|
|
225
|
+
const operation = typeof input.operation_id === 'string' ? input.operation_id : null;
|
|
226
|
+
const answered = operation === null ? undefined : sentTurns.get(operation);
|
|
227
|
+
if (answered !== undefined)
|
|
228
|
+
return { kind: 'action', result: { turn: answered } };
|
|
220
229
|
issued += 1;
|
|
221
230
|
const turn = `turn-${issued}`;
|
|
222
231
|
unsealed.set(turn, named);
|
|
232
|
+
if (operation !== null)
|
|
233
|
+
sentTurns.set(operation, turn);
|
|
223
234
|
return { kind: 'action', result: { turn } };
|
|
224
235
|
}
|
|
225
236
|
if (name === 'conversation.cancel') {
|
|
226
237
|
const turn = typeof input.turn === 'string' ? input.turn : '';
|
|
227
238
|
if (sealed.has(turn) || !unsealed.has(turn)) {
|
|
228
|
-
return { kind: 'rejected', code: 'turn-sealed', fields: { turn } };
|
|
239
|
+
return { kind: 'rejected', code: 'turn-sealed', fields: { turn }, retryable: false };
|
|
229
240
|
}
|
|
230
241
|
unsealed.delete(turn);
|
|
231
242
|
return { kind: 'action', result: { turn, cancelled: true } };
|
|
@@ -246,9 +257,11 @@ export function createMemoryAdapter(options = {}) {
|
|
|
246
257
|
capabilities,
|
|
247
258
|
providerLimits,
|
|
248
259
|
retention,
|
|
260
|
+
...(options.member === undefined ? {} : { member: options.member }),
|
|
249
261
|
};
|
|
250
262
|
}
|
|
251
263
|
return {
|
|
264
|
+
...(options.exhaustiveDiscovery === undefined ? {} : { exhaustiveDiscovery: true }),
|
|
252
265
|
setRooms(next) {
|
|
253
266
|
rooms = [...next];
|
|
254
267
|
retain(rooms);
|
|
@@ -287,6 +300,9 @@ export function createMemoryAdapter(options = {}) {
|
|
|
287
300
|
heldRooms() {
|
|
288
301
|
return held;
|
|
289
302
|
},
|
|
303
|
+
heldDemand() {
|
|
304
|
+
return heldDemand;
|
|
305
|
+
},
|
|
290
306
|
replicatedConversations() {
|
|
291
307
|
return replicated;
|
|
292
308
|
},
|
|
@@ -310,8 +326,9 @@ export function createMemoryAdapter(options = {}) {
|
|
|
310
326
|
},
|
|
311
327
|
},
|
|
312
328
|
roomStream: {
|
|
313
|
-
hold(asked) {
|
|
329
|
+
hold(asked, demand) {
|
|
314
330
|
held = asked.map((room) => room.locator);
|
|
331
|
+
heldDemand = demand;
|
|
315
332
|
const expired = expiring.filter((locator) => held.includes(locator));
|
|
316
333
|
expiring = [];
|
|
317
334
|
const moved = asked.flatMap((room) => {
|
|
@@ -336,6 +353,7 @@ export function createMemoryAdapter(options = {}) {
|
|
|
336
353
|
observer({ kind: 'closed', revoked: false });
|
|
337
354
|
});
|
|
338
355
|
},
|
|
356
|
+
published() { },
|
|
339
357
|
observe(notify) {
|
|
340
358
|
observers.add(notify);
|
|
341
359
|
queueMicrotask(() => {
|
|
@@ -385,7 +403,7 @@ export function createMemoryAdapter(options = {}) {
|
|
|
385
403
|
if (room === undefined) {
|
|
386
404
|
return { kind: 'room-not-readable', locator: request.locator };
|
|
387
405
|
}
|
|
388
|
-
return page(room, request.pageToken
|
|
406
|
+
return page(room, request.pageToken);
|
|
389
407
|
}, request).then((answer) => note(request.locator, answer));
|
|
390
408
|
},
|
|
391
409
|
async refresh(_authorization, request) {
|
|
@@ -418,7 +436,13 @@ export function createMemoryAdapter(options = {}) {
|
|
|
418
436
|
if (room === undefined) {
|
|
419
437
|
return { kind: 'room-not-readable', locator: request.locator };
|
|
420
438
|
}
|
|
421
|
-
return {
|
|
439
|
+
return {
|
|
440
|
+
kind: 'rejected',
|
|
441
|
+
code: 'unscripted-mutation',
|
|
442
|
+
fields: {},
|
|
443
|
+
retryable: false,
|
|
444
|
+
affected: {},
|
|
445
|
+
};
|
|
422
446
|
}, request).then((answer) => note(request.locator, answer));
|
|
423
447
|
},
|
|
424
448
|
async history(_authorization, request) {
|
|
@@ -433,11 +457,35 @@ export function createMemoryAdapter(options = {}) {
|
|
|
433
457
|
};
|
|
434
458
|
}, request);
|
|
435
459
|
},
|
|
460
|
+
async binary(_authorization, request) {
|
|
461
|
+
return resolveScript(scripts.binary, () => {
|
|
462
|
+
if (request.kind === 'reference') {
|
|
463
|
+
return { kind: 'rejected', code: 'unscripted-binary', fields: {}, retryable: false };
|
|
464
|
+
}
|
|
465
|
+
const room = rooms.find((entry) => entry.locator === request.locator);
|
|
466
|
+
if (room === undefined)
|
|
467
|
+
return { kind: 'room-not-readable', locator: request.locator };
|
|
468
|
+
const blob = room.blobs?.[request.path];
|
|
469
|
+
return blob === undefined
|
|
470
|
+
? { kind: 'rejected', code: 'file_not_found', fields: {}, retryable: false }
|
|
471
|
+
: { kind: 'binary', blob };
|
|
472
|
+
}, request);
|
|
473
|
+
},
|
|
474
|
+
referrerScope(referrer) {
|
|
475
|
+
if (typeof referrer !== 'object' || referrer === null)
|
|
476
|
+
return null;
|
|
477
|
+
const { room, path, message } = referrer;
|
|
478
|
+
if (typeof message === 'string')
|
|
479
|
+
return { kind: 'conversations' };
|
|
480
|
+
if (typeof room !== 'string')
|
|
481
|
+
return null;
|
|
482
|
+
return { kind: 'room', locator: room, ...(typeof path === 'string' ? { path } : {}) };
|
|
483
|
+
},
|
|
436
484
|
async action(_authorization, request) {
|
|
437
485
|
return resolveScript(scripts.action, () => {
|
|
438
486
|
if (request.name.startsWith('conversation.'))
|
|
439
487
|
return conversationAction(request);
|
|
440
|
-
return { kind: 'rejected', code: 'unscripted-action', fields: {} };
|
|
488
|
+
return { kind: 'rejected', code: 'unscripted-action', fields: {}, retryable: false };
|
|
441
489
|
}, request).then((answer) => {
|
|
442
490
|
if (answer.kind === 'action' && answer.at !== undefined)
|
|
443
491
|
note(answer.at.locator, answer.at);
|
package/dist/model.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Definition, ValueFacts, VerifiedModel } from '@agentshouse/mdmodel';
|
|
2
|
+
import type { Open } from './open.js';
|
|
2
3
|
export type ModelIdentity = {
|
|
3
4
|
identity: string;
|
|
4
5
|
version: string;
|
|
@@ -7,7 +8,7 @@ export type ModelSnapshot = ModelIdentity & {
|
|
|
7
8
|
schema: string | null;
|
|
8
9
|
revision: string | null;
|
|
9
10
|
};
|
|
10
|
-
export type ModelUnavailableReason = 'not-readable' | 'revoked' | 'not-acquired' | 'invalid'
|
|
11
|
+
export type ModelUnavailableReason = Open<'not-readable' | 'revoked' | 'not-acquired' | 'invalid'>;
|
|
11
12
|
export type ModelResult = {
|
|
12
13
|
kind: 'model';
|
|
13
14
|
snapshot: ModelSnapshot;
|
|
@@ -44,12 +45,13 @@ export type TypesResult = {
|
|
|
44
45
|
export type ValidationReceipt = {
|
|
45
46
|
identity: string;
|
|
46
47
|
version: string;
|
|
47
|
-
source: 'current' | 'cached'
|
|
48
|
+
source: Open<'current' | 'cached'>;
|
|
48
49
|
};
|
|
49
50
|
export declare const NO_MODEL: ModelState;
|
|
50
51
|
export declare function definitionOf(state: ModelState, type: string | undefined): Definition | undefined;
|
|
51
52
|
export declare function modelTypes(state: ModelState): TypesResult;
|
|
52
53
|
export declare function cached(state: ModelState): ModelState;
|
|
53
54
|
export declare function sameModel(left: ModelIdentity, right: ModelIdentity): boolean;
|
|
55
|
+
export declare function sameTyping(left: ModelState, right: ModelState): boolean;
|
|
54
56
|
export declare function referenceField(facts: ValueFacts | undefined): boolean;
|
|
55
57
|
//# sourceMappingURL=model.d.ts.map
|
package/dist/model.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAClE,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAC/F,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC,CAAC;AACnG,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,sBAAsB,CAAA;CAAE,CAAC;AAClE,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC;AAChC,MAAM,MAAM,UAAU,GAClB;IACE,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,GACD;IACE,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,QAAQ,EAAE,aAAa,CAAC;IACxB,YAAY,EAAE,aAAa,CAAC;IAC5B,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CAC/B,CAAC;AACN,MAAM,MAAM,WAAW,GACnB;IACE,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,GACD;IACE,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,aAAa,CAAC;IAC5B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AACN,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC;CACpC,CAAC;AACF,eAAO,MAAM,QAAQ,EAAE,UAA8D,CAAC;AACtF,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAGhG;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAgBzD;AACD,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAEpD;AACD,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAE5E;AACD,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CASvE;AACD,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAErE"}
|
package/dist/model.js
CHANGED
|
@@ -23,6 +23,15 @@ export function cached(state) {
|
|
|
23
23
|
export function sameModel(left, right) {
|
|
24
24
|
return left.identity === right.identity && left.version === right.version;
|
|
25
25
|
}
|
|
26
|
+
export function sameTyping(left, right) {
|
|
27
|
+
if (left === right)
|
|
28
|
+
return true;
|
|
29
|
+
if (left.status === 'unavailable' || right.status === 'unavailable') {
|
|
30
|
+
return left.status === right.status;
|
|
31
|
+
}
|
|
32
|
+
return (left.snapshot.schema === right.snapshot.schema &&
|
|
33
|
+
sameModel(left.verifiedWith, right.verifiedWith));
|
|
34
|
+
}
|
|
26
35
|
export function referenceField(facts) {
|
|
27
36
|
return facts?.reference !== undefined || facts?.items?.reference !== undefined;
|
|
28
37
|
}
|
package/dist/observation.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { QueryDocument, QueryGroup, QueryResult } from './query.js';
|
|
1
|
+
import type { QueryCoverage, QueryDocument, QueryGroup, QueryResult } from './query.js';
|
|
2
2
|
export type Observation<T> = {
|
|
3
3
|
current(): T;
|
|
4
4
|
subscribe(listener: (value: T) => void): () => void;
|
|
@@ -13,14 +13,17 @@ export type QueryChange = {
|
|
|
13
13
|
changed: readonly (readonly [RowKey, QueryDocument | QueryGroup])[];
|
|
14
14
|
removed: readonly RowKey[];
|
|
15
15
|
order: readonly RowKey[] | null;
|
|
16
|
+
coverage?: QueryCoverage;
|
|
16
17
|
};
|
|
18
|
+
export type QueryMessage = KeyedResult | QueryChange;
|
|
17
19
|
export type Observed = {
|
|
18
20
|
observation: Observation<unknown>;
|
|
19
21
|
receive(message: unknown): void;
|
|
20
22
|
end(): void;
|
|
21
23
|
};
|
|
22
24
|
export declare function rowsOf(result: QueryResult): readonly (QueryDocument | QueryGroup)[];
|
|
23
|
-
export declare function
|
|
25
|
+
export declare function whole(message: QueryMessage): message is KeyedResult;
|
|
26
|
+
export declare function applied(keyed: KeyedResult, message: QueryMessage): KeyedResult;
|
|
24
27
|
export declare function observed(first: unknown, stop: () => void, keyed: boolean): Observed;
|
|
25
28
|
export declare function opened(watch: (deliver: (message: unknown) => void) => () => void, keyed: boolean): Promise<Observation<unknown>>;
|
|
26
29
|
export declare function observing<Topic extends string>(watch: (topic: Topic, input: readonly unknown[], deliver: (message: unknown) => void) => () => void): (topic: Topic, ...input: unknown[]) => Promise<Observation<unknown>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observation.d.ts","sourceRoot":"","sources":["../src/observation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"observation.d.ts","sourceRoot":"","sources":["../src/observation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAExF,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,OAAO,IAAI,CAAC,CAAC;IACb,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACpD,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAErC,MAAM,MAAM,WAAW,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAE3E,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IACpE,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,WAAW,CAAC;AAErD,MAAM,MAAM,QAAQ,GAAG;IACrB,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,GAAG,IAAI,IAAI,CAAC;CACb,CAAC;AAEF,wBAAgB,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC,aAAa,GAAG,UAAU,CAAC,EAAE,CAGnF;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,IAAI,WAAW,CAEnE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,GAAG,WAAW,CAkB9E;AAiBD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,OAAO,GAAG,QAAQ,CAkCnF;AAED,wBAAgB,MAAM,CACpB,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI,EAC1D,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAiB/B;AAED,wBAAgB,SAAS,CAAC,KAAK,SAAS,MAAM,EAC5C,KAAK,EAAE,CACL,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,SAAS,OAAO,EAAE,EACzB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,KAChC,MAAM,IAAI,WAEA,KAAK,YAAY,OAAO,EAAE,KAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAQ1E"}
|
package/dist/observation.js
CHANGED
|
@@ -1,19 +1,30 @@
|
|
|
1
1
|
export function rowsOf(result) {
|
|
2
|
-
|
|
2
|
+
if ('groups' in result)
|
|
3
|
+
return result.groups;
|
|
4
|
+
return 'documents' in result ? result.documents : [];
|
|
3
5
|
}
|
|
4
|
-
export function
|
|
5
|
-
|
|
6
|
+
export function whole(message) {
|
|
7
|
+
return 'result' in message;
|
|
8
|
+
}
|
|
9
|
+
export function applied(keyed, message) {
|
|
10
|
+
if (whole(message))
|
|
11
|
+
return message;
|
|
12
|
+
const result = keyed.result;
|
|
13
|
+
if ('pending' in result)
|
|
14
|
+
return keyed;
|
|
15
|
+
const rows = rowsOf(result);
|
|
6
16
|
const byKey = new Map(keyed.keys.map((key, index) => [key, rows[index]]));
|
|
7
|
-
for (const key of
|
|
17
|
+
for (const key of message.removed)
|
|
8
18
|
byKey.delete(key);
|
|
9
|
-
for (const [key, row] of
|
|
19
|
+
for (const [key, row] of message.changed)
|
|
10
20
|
byKey.set(key, row);
|
|
11
|
-
const keys =
|
|
21
|
+
const keys = message.order ?? keyed.keys.filter((key) => byKey.has(key));
|
|
12
22
|
const next = keys.map((key) => byKey.get(key));
|
|
23
|
+
const coverage = message.coverage ?? result.coverage;
|
|
13
24
|
return {
|
|
14
|
-
result: 'groups' in
|
|
15
|
-
? { groups: next }
|
|
16
|
-
: { documents: next },
|
|
25
|
+
result: 'groups' in result
|
|
26
|
+
? { groups: next, coverage }
|
|
27
|
+
: { documents: next, coverage },
|
|
17
28
|
keys,
|
|
18
29
|
};
|
|
19
30
|
}
|
|
@@ -27,11 +38,11 @@ function keyedResult(first) {
|
|
|
27
38
|
},
|
|
28
39
|
};
|
|
29
40
|
}
|
|
30
|
-
function
|
|
41
|
+
function replaced(first) {
|
|
31
42
|
return { value: first, next: (message) => message };
|
|
32
43
|
}
|
|
33
44
|
export function observed(first, stop, keyed) {
|
|
34
|
-
const reducer = keyed ? keyedResult(first) :
|
|
45
|
+
const reducer = keyed ? keyedResult(first) : replaced(first);
|
|
35
46
|
let value = reducer.value;
|
|
36
47
|
let open = true;
|
|
37
48
|
const listeners = new Set();
|
package/dist/open.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../src/open.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,CAAC,KAAK,SAAS,MAAM,IAAI,KAAK,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC"}
|
package/dist/open.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/outcome.d.ts
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
|
-
import type { ActionResult } from './adapter.js';
|
|
1
|
+
import type { ActionResult, AdapterFailure, BinaryResult, HistoryResult, ProviderRefusal, RoomVersionAt, ScopedRefusal } from './adapter.js';
|
|
2
2
|
import type { ChangeBatch } from './change.js';
|
|
3
|
-
|
|
4
|
-
kind:
|
|
3
|
+
type Refused<Kind extends string> = ProviderRefusal & {
|
|
4
|
+
kind: Kind;
|
|
5
5
|
};
|
|
6
|
+
export type Failure = Refused<'transport-uncertainty'> | Refused<'revoked-authorization'> | (Refused<'room-not-readable'> & {
|
|
7
|
+
locator: string;
|
|
8
|
+
}) | ScopedRefusal;
|
|
9
|
+
export type CallResult = {
|
|
10
|
+
kind: 'action';
|
|
11
|
+
result: unknown;
|
|
12
|
+
at?: RoomVersionAt;
|
|
13
|
+
} | Refused<'rejected'> | Refused<'undeclared'> | Failure;
|
|
14
|
+
export type HistoryAnswer = Exclude<HistoryResult, {
|
|
15
|
+
kind: Failure['kind'];
|
|
16
|
+
}> | Failure;
|
|
17
|
+
export type BinaryAnswer = {
|
|
18
|
+
kind: 'binary';
|
|
19
|
+
blob: Blob;
|
|
20
|
+
} | Refused<'rejected'> | Refused<'absent'> | Failure;
|
|
21
|
+
export declare function absentBinary(path: string): BinaryAnswer;
|
|
22
|
+
export declare function binaryAnswer(result: BinaryResult): BinaryAnswer;
|
|
23
|
+
export type Offline = {
|
|
24
|
+
readonly kind: 'offline';
|
|
25
|
+
};
|
|
26
|
+
export declare const OFFLINE: Offline;
|
|
27
|
+
export declare const UNCERTAIN: Failure;
|
|
28
|
+
export declare function undeclared(name: string): CallResult;
|
|
29
|
+
export declare function failure(result: AdapterFailure): Failure;
|
|
30
|
+
export declare function calledResult(result: ActionResult): CallResult;
|
|
31
|
+
export declare function historyAnswer(result: HistoryResult): HistoryAnswer;
|
|
6
32
|
export type Submission = {
|
|
7
33
|
readonly state: 'waiting' | 'submitted';
|
|
8
34
|
} | {
|
|
@@ -12,7 +38,10 @@ export type Submission = {
|
|
|
12
38
|
export type QueueEntry = {
|
|
13
39
|
readonly batch: ChangeBatch;
|
|
14
40
|
} & (Submission | {
|
|
41
|
+
readonly state: 'local';
|
|
42
|
+
} | {
|
|
15
43
|
readonly state: 'accepted';
|
|
16
44
|
readonly roomVersion: string;
|
|
17
45
|
});
|
|
46
|
+
export {};
|
|
18
47
|
//# sourceMappingURL=outcome.d.ts.map
|
package/dist/outcome.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outcome.d.ts","sourceRoot":"","sources":["../src/outcome.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"outcome.d.ts","sourceRoot":"","sources":["../src/outcome.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACd,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,KAAK,OAAO,CAAC,IAAI,SAAS,MAAM,IAAI,eAAe,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAErE,MAAM,MAAM,OAAO,GACf,OAAO,CAAC,uBAAuB,CAAC,GAChC,OAAO,CAAC,uBAAuB,CAAC,GAChC,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACpD,aAAa,CAAC;AAElB,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,aAAa,CAAA;CAAE,GACvD,OAAO,CAAC,UAAU,CAAC,GACnB,OAAO,CAAC,YAAY,CAAC,GACrB,OAAO,CAAC;AAEZ,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC,GAAG,OAAO,CAAC;AAExF,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAC9B,OAAO,CAAC,UAAU,CAAC,GACnB,OAAO,CAAC,QAAQ,CAAC,GACjB,OAAO,CAAC;AAEZ,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAEvD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAE/D;AAED,MAAM,MAAM,OAAO,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAEnD,eAAO,MAAM,OAAO,EAAE,OAA6B,CAAC;AAEpD,eAAO,MAAM,SAAS,EAAE,OAKvB,CAAC;AAEF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAEnD;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAiBvD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,CAE7D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAIlE;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,CAAA;CAAE,GAC3C;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GAAG,CACvD,UAAU,GACV;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAC/D,CAAC"}
|
package/dist/outcome.js
CHANGED
|
@@ -1 +1,42 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export function absentBinary(path) {
|
|
2
|
+
return { kind: 'absent', code: 'binary-file-absent', fields: { path }, retryable: false };
|
|
3
|
+
}
|
|
4
|
+
export function binaryAnswer(result) {
|
|
5
|
+
return result.kind === 'binary' || result.kind === 'rejected' ? result : failure(result);
|
|
6
|
+
}
|
|
7
|
+
export const OFFLINE = { kind: 'offline' };
|
|
8
|
+
export const UNCERTAIN = {
|
|
9
|
+
kind: 'transport-uncertainty',
|
|
10
|
+
code: 'transport-uncertainty',
|
|
11
|
+
fields: {},
|
|
12
|
+
retryable: true,
|
|
13
|
+
};
|
|
14
|
+
export function undeclared(name) {
|
|
15
|
+
return { kind: 'undeclared', code: 'action-undeclared', fields: { name }, retryable: false };
|
|
16
|
+
}
|
|
17
|
+
export function failure(result) {
|
|
18
|
+
switch (result.kind) {
|
|
19
|
+
case 'transport-uncertainty':
|
|
20
|
+
return UNCERTAIN;
|
|
21
|
+
case 'revoked-authorization':
|
|
22
|
+
return { kind: result.kind, code: result.kind, fields: {}, retryable: false };
|
|
23
|
+
case 'room-not-readable':
|
|
24
|
+
return {
|
|
25
|
+
kind: result.kind,
|
|
26
|
+
locator: result.locator,
|
|
27
|
+
code: result.kind,
|
|
28
|
+
fields: {},
|
|
29
|
+
retryable: false,
|
|
30
|
+
};
|
|
31
|
+
case 'scoped-refusal':
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export function calledResult(result) {
|
|
36
|
+
return result.kind === 'action' || result.kind === 'rejected' ? result : failure(result);
|
|
37
|
+
}
|
|
38
|
+
export function historyAnswer(result) {
|
|
39
|
+
return result.kind === 'history' || result.kind === 'revision' || result.kind === 'no-history'
|
|
40
|
+
? result
|
|
41
|
+
: failure(result);
|
|
42
|
+
}
|
package/dist/overlay.d.ts
CHANGED
|
@@ -1,15 +1,27 @@
|
|
|
1
|
-
import type { HeadChange } from './adapter.js';
|
|
1
|
+
import type { BinaryFile, HeadChange } from './adapter.js';
|
|
2
2
|
import type { ChangeBatch } from './change.js';
|
|
3
3
|
export type Heads = {
|
|
4
4
|
revisions: Readonly<Record<string, string>>;
|
|
5
5
|
changes: Readonly<Record<string, HeadChange>>;
|
|
6
6
|
};
|
|
7
|
+
export type HeldBinary = ({
|
|
8
|
+
readonly state: 'accepted';
|
|
9
|
+
} & BinaryFile) | {
|
|
10
|
+
readonly state: 'pending';
|
|
11
|
+
readonly localId: string;
|
|
12
|
+
readonly byteLength: number;
|
|
13
|
+
readonly mediaType: string;
|
|
14
|
+
readonly sha256: string;
|
|
15
|
+
};
|
|
7
16
|
export type Layer = Heads & {
|
|
8
17
|
documents: Readonly<Record<string, string>>;
|
|
9
|
-
|
|
18
|
+
binaries: Readonly<Record<string, HeldBinary>>;
|
|
10
19
|
};
|
|
20
|
+
export declare function acceptedBinaries(files: Readonly<Record<string, BinaryFile>>): Record<string, HeldBinary>;
|
|
21
|
+
export declare function sameBinary(left: HeldBinary | undefined, right: HeldBinary | undefined): boolean;
|
|
11
22
|
export declare function sameChange(left: HeadChange | undefined, right: HeadChange | undefined): boolean;
|
|
12
|
-
export declare function overlay(base: Layer, queue: readonly ChangeBatch[]): Layer;
|
|
23
|
+
export declare function overlay(base: Layer, queue: readonly ChangeBatch[], unapplied?: () => void): Layer;
|
|
13
24
|
export declare function sameLayerText(left: Layer, right: Layer): boolean;
|
|
25
|
+
export declare function changedPaths(left: Layer, right: Layer): ReadonlySet<string>;
|
|
14
26
|
export declare function overlayChanged(base: Layer, queue: readonly ChangeBatch[], previousBase: Layer, previousQueue: readonly ChangeBatch[], previousVisible: Layer): Layer;
|
|
15
27
|
//# sourceMappingURL=overlay.d.ts.map
|
package/dist/overlay.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAU,WAAW,EAAgB,MAAM,aAAa,CAAC;AAGrE,MAAM,MAAM,KAAK,GAAG;IAClB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB,CAAC;IAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GAAG,UAAU,CAAC,GAC7C;IACE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG;IAC1B,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;CAChD,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,GAC1C,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAI5B;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAW/F;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAQ/F;AAsKD,wBAAgB,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,WAAW,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,KAAK,CAmBjG;AAQD,wBAAgB,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAKhE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAO3E;AA6BD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,YAAY,EAAE,KAAK,EACnB,aAAa,EAAE,SAAS,WAAW,EAAE,EACrC,eAAe,EAAE,KAAK,GACrB,KAAK,CAwDP"}
|