@agentshouse/mdruntime 0.1.0-cae97ad2e9142 → 0.1.0-caf080a9a9c60
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 +14 -14
- package/dist/acceptance.d.ts +3 -0
- package/dist/acceptance.d.ts.map +1 -0
- package/dist/acceptance.js +318 -0
- package/dist/act-lanes.d.ts +29 -0
- package/dist/act-lanes.d.ts.map +1 -0
- package/dist/act-lanes.js +177 -0
- package/dist/actions.d.ts +25 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +261 -0
- package/dist/adapter.d.ts +126 -107
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts +3 -10
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +29 -47
- package/dist/bootstrap.d.ts +17 -19
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +266 -135
- 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 +5 -0
- package/dist/chat-types.d.ts.map +1 -0
- package/dist/chat-types.js +13 -0
- package/dist/client.d.ts +28 -18
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +84 -20
- package/dist/collection.d.ts +28 -7
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +35 -19
- package/dist/compile.d.ts +8 -6
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +289 -332
- package/dist/connection.d.ts +6 -141
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +111 -5012
- 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 +138 -0
- package/dist/conversation-live.d.ts.map +1 -0
- package/dist/conversation-live.js +249 -0
- package/dist/conversation-row.d.ts +33 -0
- package/dist/conversation-row.d.ts.map +1 -0
- package/dist/conversation-row.js +53 -0
- package/dist/conversation.d.ts +59 -50
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +938 -832
- 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 +153 -0
- package/dist/durability.d.ts +18 -1
- package/dist/durability.d.ts.map +1 -1
- package/dist/entry.d.ts +3 -2
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +19 -9
- 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 +197 -0
- package/dist/file.d.ts +2 -11
- package/dist/file.d.ts.map +1 -1
- package/dist/file.js +6 -4
- 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 +20 -8
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +70 -40
- 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 +33 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -3
- package/dist/install.d.ts +54 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +539 -0
- package/dist/lifecycle.d.ts +7 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +279 -0
- package/dist/listing.d.ts +48 -0
- package/dist/listing.d.ts.map +1 -0
- package/dist/listing.js +139 -0
- package/dist/live.d.ts +5 -4
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +64 -23
- package/dist/locks.d.ts +7 -0
- package/dist/locks.d.ts.map +1 -0
- package/dist/locks.js +33 -0
- package/dist/log.d.ts +1 -0
- package/dist/log.d.ts.map +1 -1
- package/dist/lost.d.ts +5 -0
- package/dist/lost.d.ts.map +1 -0
- package/dist/lost.js +50 -0
- package/dist/media.d.ts +8 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/media.js +218 -0
- package/dist/memory.d.ts +15 -6
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +251 -98
- package/dist/messages.d.ts +24 -3
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +92 -32
- package/dist/model.d.ts +8 -11
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +5 -22
- package/dist/models.d.ts +10 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +156 -0
- package/dist/observation.d.ts +3 -2
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +15 -15
- 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 +59 -0
- package/dist/outcome.d.ts +20 -6
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +34 -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 +3 -0
- package/dist/parts.d.ts.map +1 -0
- package/dist/parts.js +10 -0
- package/dist/paths.d.ts +2 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +26 -0
- package/dist/preparation.d.ts +20 -0
- package/dist/preparation.d.ts.map +1 -0
- package/dist/preparation.js +233 -0
- package/dist/presence.d.ts +52 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +220 -0
- package/dist/queries.d.ts +16 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +285 -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 +465 -0
- package/dist/reach.d.ts +15 -12
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +228 -145
- package/dist/react.d.ts +15 -2
- 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 +3 -18
- package/dist/readiness.d.ts.map +1 -1
- package/dist/readiness.js +4 -10
- package/dist/reads.d.ts +38 -10
- package/dist/reads.d.ts.map +1 -1
- package/dist/reads.js +163 -85
- package/dist/recovery.d.ts +3 -0
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +57 -1
- package/dist/refresh.d.ts +7 -5
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +35 -7
- package/dist/refusal.d.ts +5 -0
- package/dist/refusal.d.ts.map +1 -0
- package/dist/refusal.js +57 -0
- package/dist/replica.d.ts +13 -19
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +66 -35
- 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 +24 -10
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +142 -106
- 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 -21
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +46 -174
- package/dist/runtime.d.ts +36 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +1 -0
- package/dist/save.d.ts +42 -84
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +349 -170
- package/dist/saves.d.ts +32 -0
- package/dist/saves.d.ts.map +1 -0
- package/dist/saves.js +413 -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 -7
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +13 -105
- package/dist/shown.d.ts +32 -0
- package/dist/shown.d.ts.map +1 -0
- package/dist/shown.js +290 -0
- package/dist/socket/admission.d.ts +7 -0
- package/dist/socket/admission.d.ts.map +1 -0
- package/dist/socket/admission.js +39 -0
- package/dist/socket/answers.d.ts +6 -0
- package/dist/socket/answers.d.ts.map +1 -0
- package/dist/socket/answers.js +20 -0
- package/dist/socket/lanes.d.ts +21 -0
- package/dist/socket/lanes.d.ts.map +1 -0
- package/dist/socket/lanes.js +80 -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 +68 -0
- package/dist/socket.d.ts.map +1 -0
- package/dist/socket.js +171 -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 +4 -5
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +3 -7
- package/dist/store/installs.d.ts +30 -0
- package/dist/store/installs.d.ts.map +1 -0
- package/dist/store/installs.js +34 -0
- package/dist/store/readiness.d.ts +10 -0
- package/dist/store/readiness.d.ts.map +1 -0
- package/dist/store/readiness.js +52 -0
- package/dist/store/records.d.ts +212 -0
- package/dist/store/records.d.ts.map +1 -0
- package/dist/store/records.js +430 -0
- package/dist/store/room-held.d.ts +8 -0
- package/dist/store/room-held.d.ts.map +1 -0
- package/dist/store/room-held.js +17 -0
- package/dist/store/space.d.ts +11 -0
- package/dist/store/space.d.ts.map +1 -0
- package/dist/store/space.js +41 -0
- package/dist/store/watchers.d.ts +17 -0
- package/dist/store/watchers.d.ts.map +1 -0
- package/dist/store/watchers.js +56 -0
- package/dist/store/writes.d.ts +24 -0
- package/dist/store/writes.d.ts.map +1 -0
- package/dist/store/writes.js +125 -0
- package/dist/store.d.ts +110 -158
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +167 -403
- package/dist/stored.d.ts +65 -59
- package/dist/stored.d.ts.map +1 -1
- package/dist/stored.js +356 -271
- package/dist/surface.d.ts +88 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +223 -0
- package/dist/sync.d.ts +19 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +540 -0
- package/dist/tables.d.ts +127 -69
- package/dist/tables.d.ts.map +1 -1
- package/dist/tables.js +218 -105
- package/dist/tallies.d.ts +18 -0
- package/dist/tallies.d.ts.map +1 -0
- package/dist/tallies.js +129 -0
- package/dist/transfer.d.ts +0 -5
- package/dist/transfer.d.ts.map +1 -1
- package/dist/validation.d.ts +3 -4
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +42 -100
- 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 +63 -11
- 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 -368
- package/dist/words.d.ts +0 -19
- package/dist/words.d.ts.map +0 -1
- package/dist/words.js +0 -150
package/dist/memory.js
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
|
+
import { definitionAt, documentFacts, parse } from '@agentshouse/mdmodel';
|
|
2
|
+
import { roomTypesOf, schemaTypes } from './attached-model.js';
|
|
3
|
+
import { selected } from './collection.js';
|
|
1
4
|
import { sameChange } from './overlay.js';
|
|
5
|
+
const ATTACHMENTS = 'attachments';
|
|
6
|
+
function lastName(path) {
|
|
7
|
+
return path.slice(path.lastIndexOf('/') + 1);
|
|
8
|
+
}
|
|
2
9
|
const FIXTURE_RETENTION = {
|
|
3
10
|
history: { kind: 'duration', seconds: 1 },
|
|
4
|
-
outcome: 604_800,
|
|
5
11
|
refreshHorizon: 1,
|
|
6
12
|
};
|
|
7
13
|
function declaredRetention(value) {
|
|
@@ -48,13 +54,16 @@ export function createMemoryAdapter(options = {}) {
|
|
|
48
54
|
const listeners = new Set();
|
|
49
55
|
const modeObservers = new Set();
|
|
50
56
|
const scripted = new Map();
|
|
51
|
-
const
|
|
52
|
-
const sealed = new Set();
|
|
53
|
-
const sentTurns = new Map();
|
|
57
|
+
const repeats = new Map();
|
|
54
58
|
const historyPageSize = options.historyPageSize;
|
|
55
|
-
|
|
59
|
+
const attached = new Map();
|
|
60
|
+
const linked = new WeakMap();
|
|
61
|
+
const carried = new Map();
|
|
56
62
|
let expiring = [];
|
|
63
|
+
let openings = 0;
|
|
64
|
+
const declaredRooms = new Set();
|
|
57
65
|
let replicated = [];
|
|
66
|
+
let heldCursor = null;
|
|
58
67
|
let issued = 0;
|
|
59
68
|
function scriptConversations(entries) {
|
|
60
69
|
scripted.clear();
|
|
@@ -82,8 +91,53 @@ export function createMemoryAdapter(options = {}) {
|
|
|
82
91
|
const wanted = ordinals.get(`${locator}\u0000${target}`);
|
|
83
92
|
return held !== undefined && wanted !== undefined && held >= wanted;
|
|
84
93
|
}
|
|
94
|
+
function heldBlob(room, path) {
|
|
95
|
+
return attached.get(`${room.locator}\u0000${path}`) ?? room.blobs?.[path];
|
|
96
|
+
}
|
|
97
|
+
function freePath(room, name) {
|
|
98
|
+
const dot = name.lastIndexOf('.');
|
|
99
|
+
const stem = dot > 0 ? name.slice(0, dot) : name;
|
|
100
|
+
const extension = dot > 0 ? name.slice(dot) : '';
|
|
101
|
+
for (let count = 1;; count += 1) {
|
|
102
|
+
const path = `${ATTACHMENTS}/${count === 1 ? stem : `${stem}-${count}`}${extension}`;
|
|
103
|
+
if (heldBlob(room, path) === undefined && room.documents?.[path] === undefined)
|
|
104
|
+
return path;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const saved = new WeakMap();
|
|
108
|
+
const roomTypes = roomTypesOf(options.roomTypes);
|
|
109
|
+
function factsAt(room, path, content) {
|
|
110
|
+
const types = selected({ selection: room.typedSelection ?? null }, path)
|
|
111
|
+
? roomTypes.types
|
|
112
|
+
: schemaTypes(room.model?.kind === 'model' ? room.model.snapshot.schema : null, roomTypes);
|
|
113
|
+
let held = saved.get(types);
|
|
114
|
+
if (held === undefined) {
|
|
115
|
+
held = new Map();
|
|
116
|
+
saved.set(types, held);
|
|
117
|
+
}
|
|
118
|
+
const key = `${path}\u0000${content}`;
|
|
119
|
+
if (!held.has(key)) {
|
|
120
|
+
const facts = documentFacts(path, parse(content, path, definitionAt({ types }, path, options.typedPaths)), {
|
|
121
|
+
types,
|
|
122
|
+
});
|
|
123
|
+
held.set(key, facts === null ? null : JSON.parse(JSON.stringify(facts)));
|
|
124
|
+
}
|
|
125
|
+
return held.get(key);
|
|
126
|
+
}
|
|
127
|
+
function factsIn(room, paths) {
|
|
128
|
+
const facts = {};
|
|
129
|
+
for (const path of paths) {
|
|
130
|
+
const content = room.documents?.[path];
|
|
131
|
+
const held = room.facts?.[path] ?? (content === undefined ? null : factsAt(room, path, content));
|
|
132
|
+
if (held !== null)
|
|
133
|
+
facts[path] = held;
|
|
134
|
+
}
|
|
135
|
+
return facts;
|
|
136
|
+
}
|
|
85
137
|
function retain(entries) {
|
|
86
138
|
for (const room of entries) {
|
|
139
|
+
for (const [path, content] of Object.entries(room.documents ?? {}))
|
|
140
|
+
factsAt(room, path, content);
|
|
87
141
|
note(room.locator, room);
|
|
88
142
|
const versions = served.get(room.locator) ?? new Map();
|
|
89
143
|
versions.set(room.roomVersion, room);
|
|
@@ -99,8 +153,9 @@ export function createMemoryAdapter(options = {}) {
|
|
|
99
153
|
roomVersion: room.roomVersion,
|
|
100
154
|
operations: room.operations,
|
|
101
155
|
replica: room.replica,
|
|
102
|
-
|
|
156
|
+
typedSelection: room.typedSelection ?? null,
|
|
103
157
|
providerOwnedPaths: room.providerOwnedPaths,
|
|
158
|
+
authoredPaths: room.authoredPaths ?? ['**'],
|
|
104
159
|
};
|
|
105
160
|
}
|
|
106
161
|
function page(room, after) {
|
|
@@ -116,10 +171,14 @@ export function createMemoryAdapter(options = {}) {
|
|
|
116
171
|
roomVersion: room.roomVersion,
|
|
117
172
|
...(opening ? { models: modelsOf(room) } : {}),
|
|
118
173
|
documents: named(room.documents ?? {}, taken),
|
|
174
|
+
facts: factsIn(room, taken),
|
|
119
175
|
revisions: named(room.revisions ?? {}, [...taken, ...targets]),
|
|
120
176
|
...(room.fileIds === undefined
|
|
121
177
|
? {}
|
|
122
178
|
: { fileIds: named(room.fileIds, [...taken, ...targets]) }),
|
|
179
|
+
...(room.created === undefined
|
|
180
|
+
? {}
|
|
181
|
+
: { created: named(room.created, [...taken, ...targets]) }),
|
|
123
182
|
changes: named(room.changes ?? {}, [...taken, ...targets]),
|
|
124
183
|
binaryFiles: named(room.binaryFiles ?? {}, targets),
|
|
125
184
|
...(opening && room.folders !== undefined ? { folders: room.folders } : {}),
|
|
@@ -136,18 +195,19 @@ export function createMemoryAdapter(options = {}) {
|
|
|
136
195
|
...(folderRemovals.length === 0 ? {} : { folderRemovals }),
|
|
137
196
|
};
|
|
138
197
|
}
|
|
139
|
-
function advancement(room, from, at) {
|
|
198
|
+
function advancement(room, from, at, whole = false) {
|
|
140
199
|
const current = room.documents ?? {};
|
|
141
200
|
const previous = from.documents ?? {};
|
|
142
201
|
const currentTargets = new Set(Object.keys(room.binaryFiles ?? {}));
|
|
143
202
|
const previousTargets = new Set(Object.keys(from.binaryFiles ?? {}));
|
|
144
203
|
const headMoved = (path) => room.revisions?.[path] !== from.revisions?.[path] ||
|
|
145
204
|
room.fileIds?.[path] !== from.fileIds?.[path] ||
|
|
205
|
+
room.created?.[path] !== from.created?.[path] ||
|
|
146
206
|
!sameChange(room.changes?.[path], from.changes?.[path]);
|
|
147
207
|
const changed = Object.keys(current)
|
|
148
208
|
.filter((path) => current[path] !== previous[path] || headMoved(path))
|
|
149
209
|
.sort();
|
|
150
|
-
const size = pageSize ?? changed.length;
|
|
210
|
+
const size = whole ? changed.length : (pageSize ?? changed.length);
|
|
151
211
|
const taken = changed.slice(at, at + size);
|
|
152
212
|
const next = at + taken.length;
|
|
153
213
|
const opening = at === 0;
|
|
@@ -163,10 +223,14 @@ export function createMemoryAdapter(options = {}) {
|
|
|
163
223
|
roomVersion: room.roomVersion,
|
|
164
224
|
...(models === undefined ? {} : { models }),
|
|
165
225
|
documents: named(current, taken),
|
|
226
|
+
facts: factsIn(room, taken),
|
|
166
227
|
revisions: named(room.revisions ?? {}, [...taken, ...targets]),
|
|
167
228
|
...(room.fileIds === undefined
|
|
168
229
|
? {}
|
|
169
230
|
: { fileIds: named(room.fileIds, [...taken, ...targets]) }),
|
|
231
|
+
...(room.created === undefined
|
|
232
|
+
? {}
|
|
233
|
+
: { created: named(room.created, [...taken, ...targets]) }),
|
|
170
234
|
changes: named(room.changes ?? {}, [...taken, ...targets]),
|
|
171
235
|
binaryFiles: named(room.binaryFiles ?? {}, targets),
|
|
172
236
|
...(opening ? foldersMoved(room, from) : {}),
|
|
@@ -179,30 +243,45 @@ export function createMemoryAdapter(options = {}) {
|
|
|
179
243
|
...(pageToken === undefined ? {} : { pageToken }),
|
|
180
244
|
};
|
|
181
245
|
}
|
|
246
|
+
function carry(locator) {
|
|
247
|
+
const at = carried.get(locator);
|
|
248
|
+
const current = rooms.find((entry) => entry.locator === locator);
|
|
249
|
+
if (at === undefined || current === undefined || current.roomVersion === at)
|
|
250
|
+
return;
|
|
251
|
+
const from = served.get(locator)?.get(at);
|
|
252
|
+
carried.set(locator, current.roomVersion);
|
|
253
|
+
if (from === undefined)
|
|
254
|
+
return;
|
|
255
|
+
const page = advancement(current, from, 0, true);
|
|
256
|
+
for (const observer of observers) {
|
|
257
|
+
observer({
|
|
258
|
+
kind: 'room-change',
|
|
259
|
+
locator,
|
|
260
|
+
from: at,
|
|
261
|
+
roomVersion: current.roomVersion,
|
|
262
|
+
read: async () => page,
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
}
|
|
182
266
|
function pageOf(conversation, after) {
|
|
183
267
|
const messages = conversation.messages ?? [];
|
|
184
|
-
const first = typeof after === 'string' ? messages.findIndex((message) => message.
|
|
268
|
+
const first = typeof after === 'string' ? messages.findIndex((message) => message.change > after) : 0;
|
|
185
269
|
const from = first === -1 ? messages.length : first;
|
|
186
270
|
const page = messages.slice(from, from + (historyPageSize ?? messages.length));
|
|
187
271
|
const last = page.at(-1);
|
|
188
272
|
return {
|
|
189
273
|
conversation: conversation.conversation,
|
|
190
274
|
messages: page,
|
|
191
|
-
...(last !== undefined && from + page.length < messages.length
|
|
192
|
-
? { next: last.position }
|
|
193
|
-
: {}),
|
|
275
|
+
...(last !== undefined && from + page.length < messages.length ? { next: last.change } : {}),
|
|
194
276
|
};
|
|
195
277
|
}
|
|
196
|
-
function historiesOf(
|
|
197
|
-
const asked = input?.conversations;
|
|
198
|
-
if (!Array.isArray(asked))
|
|
199
|
-
return { kind: 'rejected', code: 'invalid_request', fields: {}, retryable: false };
|
|
278
|
+
function historiesOf(request) {
|
|
200
279
|
const histories = [];
|
|
201
|
-
for (const entry of
|
|
202
|
-
const conversation =
|
|
280
|
+
for (const entry of request.conversations) {
|
|
281
|
+
const conversation = scripted.get(entry.conversation);
|
|
203
282
|
if (conversation === undefined)
|
|
204
283
|
continue;
|
|
205
|
-
const outcome = conversation.outcomes?.
|
|
284
|
+
const outcome = conversation.outcomes?.history;
|
|
206
285
|
if (outcome !== undefined)
|
|
207
286
|
return outcome;
|
|
208
287
|
histories.push(pageOf(conversation, entry.after));
|
|
@@ -213,15 +292,22 @@ export function createMemoryAdapter(options = {}) {
|
|
|
213
292
|
function conversationAction(request) {
|
|
214
293
|
const name = request.name;
|
|
215
294
|
const input = (request.input ?? {});
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
295
|
+
const operation = typeof input.operation_id === 'string' ? `${name}\u0000${input.operation_id}` : null;
|
|
296
|
+
const first = (answer) => {
|
|
297
|
+
if (operation !== null)
|
|
298
|
+
repeats.set(operation, answer);
|
|
299
|
+
return answer;
|
|
300
|
+
};
|
|
301
|
+
const repeated = operation === null ? undefined : repeats.get(operation);
|
|
302
|
+
if (name === 'conversations/create') {
|
|
303
|
+
if (repeated !== undefined)
|
|
304
|
+
return repeated;
|
|
219
305
|
issued += 1;
|
|
220
306
|
const conversation = `conversation-${issued}`;
|
|
221
307
|
scripted.set(conversation, { conversation });
|
|
222
|
-
return { kind: 'action', result: { conversation } };
|
|
308
|
+
return first({ kind: 'action', result: { conversation_id: conversation } });
|
|
223
309
|
}
|
|
224
|
-
const named = typeof input.
|
|
310
|
+
const named = typeof input.conversation_id === 'string' ? input.conversation_id : '';
|
|
225
311
|
const conversation = scripted.get(named);
|
|
226
312
|
if (conversation === undefined) {
|
|
227
313
|
return {
|
|
@@ -234,34 +320,34 @@ export function createMemoryAdapter(options = {}) {
|
|
|
234
320
|
const outcome = conversation.outcomes?.[name];
|
|
235
321
|
if (outcome !== undefined)
|
|
236
322
|
return outcome;
|
|
237
|
-
if (name === '
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
if (answered !== undefined)
|
|
241
|
-
return { kind: 'action', result: { turn: answered } };
|
|
323
|
+
if (name === 'conversations/send') {
|
|
324
|
+
if (repeated !== undefined)
|
|
325
|
+
return repeated;
|
|
242
326
|
issued += 1;
|
|
243
|
-
|
|
244
|
-
unsealed.set(turn, named);
|
|
245
|
-
if (operation !== null)
|
|
246
|
-
sentTurns.set(operation, turn);
|
|
247
|
-
return { kind: 'action', result: { turn } };
|
|
248
|
-
}
|
|
249
|
-
if (name === 'conversation.cancel') {
|
|
250
|
-
const turn = typeof input.turn === 'string' ? input.turn : '';
|
|
251
|
-
if (sealed.has(turn) || !unsealed.has(turn)) {
|
|
252
|
-
return { kind: 'rejected', code: 'turn-sealed', fields: { turn }, retryable: false };
|
|
253
|
-
}
|
|
254
|
-
unsealed.delete(turn);
|
|
255
|
-
return { kind: 'action', result: { turn, cancelled: true } };
|
|
327
|
+
return first({ kind: 'action', result: { message_id: `turn-${issued}` } });
|
|
256
328
|
}
|
|
257
|
-
if (name === '
|
|
329
|
+
if (name === 'conversations/delete')
|
|
258
330
|
scripted.delete(named);
|
|
259
|
-
return { kind: 'action', result: {
|
|
331
|
+
return { kind: 'action', result: { conversation_id: named } };
|
|
332
|
+
}
|
|
333
|
+
function decided(request) {
|
|
334
|
+
const { request: asked, message, decision, } = (request.input ?? {});
|
|
335
|
+
return {
|
|
336
|
+
kind: 'action',
|
|
337
|
+
result: {
|
|
338
|
+
request: asked,
|
|
339
|
+
...(message === undefined ? {} : { message }),
|
|
340
|
+
state: decision === 'approve' ? 'started' : 'declined',
|
|
341
|
+
},
|
|
342
|
+
};
|
|
260
343
|
}
|
|
261
344
|
function announceList() {
|
|
262
|
-
const entries = [...scripted.values()].flatMap(({ conversation, listed }) => listed === undefined
|
|
263
|
-
|
|
264
|
-
|
|
345
|
+
const entries = [...scripted.values()].flatMap(({ conversation, listed, messages = [] }) => listed === undefined
|
|
346
|
+
? []
|
|
347
|
+
: [{ conversation, ...listed, newest: messages.at(-1)?.change ?? null }]);
|
|
348
|
+
for (const listener of listeners) {
|
|
349
|
+
listener({ kind: 'list', entries, whole: true, more: false, cursor: null });
|
|
350
|
+
}
|
|
265
351
|
}
|
|
266
352
|
function discovery() {
|
|
267
353
|
return {
|
|
@@ -273,9 +359,42 @@ export function createMemoryAdapter(options = {}) {
|
|
|
273
359
|
...(options.member === undefined ? {} : { member: options.member }),
|
|
274
360
|
};
|
|
275
361
|
}
|
|
362
|
+
function discovered() {
|
|
363
|
+
return resolveScript(scripts.discover, discovery, undefined).then((answer) => {
|
|
364
|
+
if (answer.kind === 'discovery')
|
|
365
|
+
for (const room of answer.rooms)
|
|
366
|
+
note(room.locator, room);
|
|
367
|
+
return answer;
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
function opened(notify) {
|
|
371
|
+
const opening = ++openings;
|
|
372
|
+
notify({ kind: 'opened' });
|
|
373
|
+
void discovered()
|
|
374
|
+
.catch(() => ({ kind: 'transport-uncertainty' }))
|
|
375
|
+
.then((answer) => {
|
|
376
|
+
if (opening !== openings)
|
|
377
|
+
return;
|
|
378
|
+
if (answer.kind !== 'discovery') {
|
|
379
|
+
openings += 1;
|
|
380
|
+
carried.clear();
|
|
381
|
+
const revoked = answer.kind === 'revoked-authorization';
|
|
382
|
+
notify({ kind: 'closed', revoked, lost: !revoked, authorityChanged: false });
|
|
383
|
+
return;
|
|
384
|
+
}
|
|
385
|
+
declaredRooms.clear();
|
|
386
|
+
for (const room of answer.rooms)
|
|
387
|
+
declaredRooms.add(room.locator);
|
|
388
|
+
notify({ kind: 'discovered', discovery: answer });
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
function emitAll(event) {
|
|
392
|
+
for (const observer of observers)
|
|
393
|
+
observer(event);
|
|
394
|
+
}
|
|
276
395
|
return {
|
|
277
|
-
...(options.exhaustiveDiscovery === undefined ? {} : { exhaustiveDiscovery: true }),
|
|
278
396
|
...(options.roomTypes === undefined ? {} : { roomTypes: options.roomTypes }),
|
|
397
|
+
...(options.typedPaths === undefined ? {} : { typedPaths: options.typedPaths }),
|
|
279
398
|
setRooms(next) {
|
|
280
399
|
rooms = [...next];
|
|
281
400
|
retain(rooms);
|
|
@@ -284,33 +403,37 @@ export function createMemoryAdapter(options = {}) {
|
|
|
284
403
|
scriptConversations(next);
|
|
285
404
|
},
|
|
286
405
|
open() {
|
|
406
|
+
carried.clear();
|
|
287
407
|
announceList();
|
|
288
|
-
|
|
289
|
-
observer({ kind: 'opened' });
|
|
408
|
+
opened(emitAll);
|
|
290
409
|
},
|
|
291
|
-
close({ revoked = false, lost = !revoked } = {}) {
|
|
292
|
-
|
|
293
|
-
|
|
410
|
+
close({ revoked = false, lost = !revoked, authorityChanged = false } = {}) {
|
|
411
|
+
openings += 1;
|
|
412
|
+
carried.clear();
|
|
413
|
+
emitAll({ kind: 'closed', revoked, lost, authorityChanged });
|
|
294
414
|
},
|
|
295
415
|
expire(locators) {
|
|
296
416
|
expiring = [...locators];
|
|
297
417
|
},
|
|
298
|
-
notifyRoomVersion({ locator
|
|
299
|
-
|
|
300
|
-
observer({ kind: 'room-version', locator, roomVersion });
|
|
418
|
+
notifyRoomVersion({ locator }) {
|
|
419
|
+
carry(locator);
|
|
301
420
|
},
|
|
302
|
-
notifyAuthorityChanged(
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
421
|
+
notifyAuthorityChanged(locators) {
|
|
422
|
+
const named = new Set(locators ?? [...declaredRooms, ...rooms.map((room) => room.locator)]);
|
|
423
|
+
const listed = rooms.filter((room) => named.has(room.locator));
|
|
424
|
+
const left = [...named].filter((locator) => !listed.some((room) => room.locator === locator));
|
|
425
|
+
for (const room of listed)
|
|
426
|
+
declaredRooms.add(room.locator);
|
|
427
|
+
for (const locator of left)
|
|
428
|
+
declaredRooms.delete(locator);
|
|
429
|
+
emitAll({
|
|
430
|
+
kind: 'authority-changed',
|
|
431
|
+
rooms: listed.map(declared),
|
|
432
|
+
left,
|
|
433
|
+
...(options.member === undefined ? {} : { member: options.member }),
|
|
434
|
+
});
|
|
308
435
|
},
|
|
309
436
|
notifyConversation(event) {
|
|
310
|
-
if (event.kind === 'accepted-message') {
|
|
311
|
-
sealed.add(event.message.turn);
|
|
312
|
-
unsealed.delete(event.message.turn);
|
|
313
|
-
}
|
|
314
437
|
for (const listener of listeners)
|
|
315
438
|
listener(event);
|
|
316
439
|
},
|
|
@@ -319,21 +442,31 @@ export function createMemoryAdapter(options = {}) {
|
|
|
319
442
|
observer(mode);
|
|
320
443
|
},
|
|
321
444
|
heldRooms() {
|
|
322
|
-
return
|
|
445
|
+
return [...carried.keys()].sort();
|
|
323
446
|
},
|
|
324
447
|
replicatedConversations() {
|
|
325
448
|
return replicated;
|
|
326
449
|
},
|
|
450
|
+
heldConversationCursor() {
|
|
451
|
+
return heldCursor;
|
|
452
|
+
},
|
|
327
453
|
conversations: {
|
|
328
454
|
replicate(next) {
|
|
329
455
|
replicated = [...next];
|
|
330
456
|
},
|
|
457
|
+
hold(cursor) {
|
|
458
|
+
heldCursor = cursor;
|
|
459
|
+
},
|
|
331
460
|
observe(notify) {
|
|
332
461
|
listeners.add(notify);
|
|
333
462
|
return () => {
|
|
334
463
|
listeners.delete(notify);
|
|
335
464
|
};
|
|
336
465
|
},
|
|
466
|
+
history: (request) => Promise.resolve(historiesOf(request)),
|
|
467
|
+
...(options.agents === undefined
|
|
468
|
+
? {}
|
|
469
|
+
: { agents: () => Promise.resolve(structuredClone(options.agents)) }),
|
|
337
470
|
},
|
|
338
471
|
serviceMode: {
|
|
339
472
|
observe(notify) {
|
|
@@ -345,44 +478,46 @@ export function createMemoryAdapter(options = {}) {
|
|
|
345
478
|
},
|
|
346
479
|
roomStream: {
|
|
347
480
|
hold(asked) {
|
|
348
|
-
|
|
349
|
-
const
|
|
350
|
-
expiring = [];
|
|
351
|
-
const moved = asked.flatMap((room) => {
|
|
481
|
+
const named = asked.map((room) => room.locator);
|
|
482
|
+
const unknown = asked.flatMap((room) => {
|
|
352
483
|
const current = rooms.find((entry) => entry.locator === room.locator);
|
|
484
|
+
const version = room.roomVersion;
|
|
353
485
|
return current === undefined ||
|
|
354
|
-
|
|
355
|
-
|
|
486
|
+
(version !== null &&
|
|
487
|
+
(current.roomVersion === version || served.get(room.locator)?.has(version) === true))
|
|
356
488
|
? []
|
|
357
|
-
: [
|
|
358
|
-
});
|
|
359
|
-
queueMicrotask(() => {
|
|
360
|
-
for (const observer of observers) {
|
|
361
|
-
for (const room of moved)
|
|
362
|
-
observer({ kind: 'room-version', ...room });
|
|
363
|
-
observer({ kind: 'opening', expired });
|
|
364
|
-
}
|
|
489
|
+
: [room.locator];
|
|
365
490
|
});
|
|
366
|
-
|
|
367
|
-
|
|
491
|
+
const expired = [
|
|
492
|
+
...new Set([...expiring.filter((locator) => named.includes(locator)), ...unknown]),
|
|
493
|
+
];
|
|
494
|
+
expiring = expiring.filter((locator) => !named.includes(locator));
|
|
368
495
|
queueMicrotask(() => {
|
|
369
|
-
for (const
|
|
370
|
-
|
|
496
|
+
for (const room of asked) {
|
|
497
|
+
if (expired.includes(room.locator) || room.roomVersion === null)
|
|
498
|
+
carried.delete(room.locator);
|
|
499
|
+
else {
|
|
500
|
+
carried.set(room.locator, room.roomVersion);
|
|
501
|
+
carry(room.locator);
|
|
502
|
+
}
|
|
371
503
|
}
|
|
504
|
+
emitAll({ kind: 'caught-up', expired });
|
|
372
505
|
});
|
|
373
506
|
},
|
|
374
|
-
published() { },
|
|
375
507
|
observe(notify) {
|
|
376
508
|
observers.add(notify);
|
|
377
509
|
queueMicrotask(() => {
|
|
378
510
|
if (!observers.has(notify))
|
|
379
511
|
return;
|
|
380
512
|
if (options.unopened === true) {
|
|
381
|
-
notify({ kind: 'closed', revoked: false, lost: true });
|
|
513
|
+
notify({ kind: 'closed', revoked: false, lost: true, authorityChanged: false });
|
|
382
514
|
return;
|
|
383
515
|
}
|
|
384
516
|
announceList();
|
|
385
|
-
|
|
517
|
+
opened((event) => {
|
|
518
|
+
if (observers.has(notify))
|
|
519
|
+
notify(event);
|
|
520
|
+
});
|
|
386
521
|
});
|
|
387
522
|
return () => {
|
|
388
523
|
observers.delete(notify);
|
|
@@ -399,12 +534,7 @@ export function createMemoryAdapter(options = {}) {
|
|
|
399
534
|
return resolveScript(scripts.authorize, () => ({}), undefined);
|
|
400
535
|
},
|
|
401
536
|
async discover(_authorization) {
|
|
402
|
-
return
|
|
403
|
-
if (answer.kind === 'discovery')
|
|
404
|
-
for (const room of answer.rooms)
|
|
405
|
-
note(room.locator, room);
|
|
406
|
-
return answer;
|
|
407
|
-
});
|
|
537
|
+
return discovered();
|
|
408
538
|
},
|
|
409
539
|
reached,
|
|
410
540
|
follows(locator, roomVersion, next) {
|
|
@@ -486,19 +616,42 @@ export function createMemoryAdapter(options = {}) {
|
|
|
486
616
|
const room = rooms.find((entry) => entry.locator === request.locator);
|
|
487
617
|
if (room === undefined)
|
|
488
618
|
return { kind: 'room-not-readable', locator: request.locator };
|
|
489
|
-
const blob = room
|
|
619
|
+
const blob = heldBlob(room, request.path);
|
|
490
620
|
return blob === undefined
|
|
491
|
-
? { kind: 'rejected', code: '
|
|
621
|
+
? { kind: 'rejected', code: 'not_found', fields: {}, retryable: false }
|
|
492
622
|
: { kind: 'binary', body: blob.stream(), mediaType: blob.type };
|
|
493
623
|
}, request);
|
|
494
624
|
},
|
|
495
625
|
async link(_authorization, request) {
|
|
496
|
-
return resolveScript(scripts.link, () =>
|
|
626
|
+
return resolveScript(scripts.link, () => {
|
|
627
|
+
const room = rooms.find((entry) => entry.locator === request.locator);
|
|
628
|
+
if (room === undefined)
|
|
629
|
+
return { kind: 'room-not-readable', locator: request.locator };
|
|
630
|
+
const blob = heldBlob(room, request.path);
|
|
631
|
+
if (blob === undefined) {
|
|
632
|
+
return { kind: 'rejected', code: 'not_found', fields: {}, retryable: false };
|
|
633
|
+
}
|
|
634
|
+
const url = linked.get(blob) ?? URL.createObjectURL(blob);
|
|
635
|
+
linked.set(blob, url);
|
|
636
|
+
return { kind: 'link', url, name: lastName(request.path), mediaType: blob.type };
|
|
637
|
+
}, request);
|
|
638
|
+
},
|
|
639
|
+
async attach(_authorization, request) {
|
|
640
|
+
return resolveScript(scripts.attach, () => {
|
|
641
|
+
const room = rooms.find((entry) => entry.locator === request.locator);
|
|
642
|
+
if (room === undefined)
|
|
643
|
+
return { kind: 'room-not-readable', locator: request.locator };
|
|
644
|
+
const path = freePath(room, request.name);
|
|
645
|
+
attached.set(`${room.locator}\u0000${path}`, request.blob);
|
|
646
|
+
return { kind: 'attached', path, revision: `attached-${attached.size}` };
|
|
647
|
+
}, request);
|
|
497
648
|
},
|
|
498
649
|
async action(_authorization, request) {
|
|
499
650
|
return resolveScript(scripts.action, () => {
|
|
500
|
-
if (request.name.startsWith('
|
|
651
|
+
if (request.name.startsWith('conversations/'))
|
|
501
652
|
return conversationAction(request);
|
|
653
|
+
if (request.name === 'agent-functions/decide')
|
|
654
|
+
return decided(request);
|
|
502
655
|
return { kind: 'rejected', code: 'unscripted-action', fields: {}, retryable: false };
|
|
503
656
|
}, request).then((answer) => {
|
|
504
657
|
if (answer.kind === 'action' && answer.at !== undefined)
|
package/dist/messages.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AcceptedMessage } from './adapter.js';
|
|
2
2
|
import type { Connection } from './tables.js';
|
|
3
3
|
export declare const MESSAGE_TABLES: readonly string[];
|
|
4
|
+
export declare const ROWS = "WITH chosen AS (\n SELECT listed.value AS conversation,\n (SELECT id FROM conversation_messages WHERE conversation = listed.value AND json_extract(message, '$.role') = 'assistant' ORDER BY position DESC, identity DESC LIMIT 1) AS answer,\n (SELECT id FROM conversation_messages WHERE conversation = listed.value AND text <> '' ORDER BY position DESC, identity DESC LIMIT 1) AS said,\n (SELECT id FROM conversation_messages WHERE conversation = listed.value AND json_extract(message, '$.role') = 'house' ORDER BY position, identity LIMIT 1) AS opened,\n (SELECT id FROM conversation_messages WHERE conversation = listed.value AND json_extract(message, '$.role') = 'house' AND json_extract(message, '$.waiting') = 1 ORDER BY position, identity LIMIT 1) AS asking\n FROM json_each(?) AS listed\n )\n SELECT chosen.conversation AS conversation,\n substr(said.text, 1, 512) AS said_text,\n json_extract(said.message, '$.role') AS said_role,\n json_extract(said.message, '$.accepted_at') AS said_at,\n substr(json_extract(answer.message, '$.failure'), 1, 512) AS failure,\n json_extract(opened.message, '$.source') AS opened_source,\n json_extract(opened.message, '$.sender') AS opened_sender,\n asking.identity AS asking_identity,\n asking.text AS asking_text,\n json_extract(asking.message, '$.accepted_at') AS asking_at,\n json_extract(asking.message, '$.source') AS asking_source,\n json_extract(asking.message, '$.sender') AS asking_sender\n FROM chosen\n LEFT JOIN conversation_messages said ON said.id = chosen.said\n LEFT JOIN conversation_messages answer ON answer.id = chosen.answer\n LEFT JOIN conversation_messages opened ON opened.id = chosen.opened\n LEFT JOIN conversation_messages asking ON asking.id = chosen.asking";
|
|
4
5
|
export type HeldConversation = {
|
|
5
6
|
readonly conversation: string;
|
|
6
7
|
readonly read: string | null | undefined;
|
|
@@ -10,6 +11,25 @@ export type MessageWindow = {
|
|
|
10
11
|
readonly messages: AcceptedMessage[];
|
|
11
12
|
readonly more: boolean;
|
|
12
13
|
};
|
|
14
|
+
export type HeldSource = {
|
|
15
|
+
readonly source: unknown;
|
|
16
|
+
readonly sender: string | null;
|
|
17
|
+
};
|
|
18
|
+
export type HeldRow = {
|
|
19
|
+
readonly conversation: string;
|
|
20
|
+
readonly said: {
|
|
21
|
+
readonly text: string;
|
|
22
|
+
readonly role: string | null;
|
|
23
|
+
readonly at: string | null;
|
|
24
|
+
} | null;
|
|
25
|
+
readonly failure: string | null;
|
|
26
|
+
readonly opened: HeldSource | null;
|
|
27
|
+
readonly asking: (HeldSource & {
|
|
28
|
+
readonly identity: string;
|
|
29
|
+
readonly text: string;
|
|
30
|
+
readonly at: string | null;
|
|
31
|
+
}) | null;
|
|
32
|
+
};
|
|
13
33
|
export type ConversationWrite = {
|
|
14
34
|
readonly conversation: string;
|
|
15
35
|
readonly messages: readonly AcceptedMessage[];
|
|
@@ -18,10 +38,11 @@ export type ConversationWrite = {
|
|
|
18
38
|
readonly partial: boolean;
|
|
19
39
|
};
|
|
20
40
|
};
|
|
21
|
-
export declare function heldConversations(connection: Connection): HeldConversation[];
|
|
41
|
+
export declare function heldConversations(connection: Connection, conversations: readonly string[] | null): HeldConversation[];
|
|
22
42
|
export declare function keptMessages(connection: Connection, { conversation, messages, read }: ConversationWrite): null;
|
|
23
|
-
export declare function messageWindow(connection: Connection, conversation: string, limit: number, before: readonly [string, string] | null): MessageWindow;
|
|
24
|
-
export declare function messageCount(connection: Connection, conversation: string): number;
|
|
43
|
+
export declare function messageWindow(connection: Connection, conversation: string, limit: number, before: readonly [string, string] | null, phrase: string | null): MessageWindow;
|
|
44
|
+
export declare function messageCount(connection: Connection, conversation: string, phrase: string | null): number;
|
|
45
|
+
export declare function conversationRows(connection: Connection, conversations: readonly string[]): HeldRow[];
|
|
25
46
|
export declare function turnArrived(connection: Connection, conversation: string, turn: string): boolean;
|
|
26
47
|
export declare function droppedMessages(connection: Connection, conversations: readonly string[]): void;
|
|
27
48
|
export declare function forgottenMessages(connection: Connection): void;
|
package/dist/messages.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"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"}
|