@agentshouse/mdruntime 0.1.0-c03e7b79830dd → 0.1.0-c0bed82db8d73
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 +65 -65
- package/README.md +8 -7
- package/dist/adapter.d.ts +10 -14
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts +1 -1
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +2 -2
- package/dist/binary.d.ts +0 -5
- package/dist/binary.d.ts.map +1 -1
- package/dist/binary.js +1 -1
- package/dist/bootstrap.d.ts +13 -2
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +94 -57
- package/dist/change-set.d.ts +1 -7
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +1 -4
- package/dist/client.d.ts +2 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -2
- package/dist/compile.d.ts +6 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +12 -3
- package/dist/connection.d.ts +4 -5
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +481 -448
- package/dist/conversation.d.ts +2 -0
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +40 -19
- package/dist/durability.d.ts +2 -5
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +5 -0
- package/dist/fulltext.d.ts +27 -0
- package/dist/fulltext.d.ts.map +1 -0
- package/dist/fulltext.js +368 -0
- package/dist/host.d.ts +4 -4
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +35 -15
- 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 +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +0 -11
- package/dist/messages.d.ts +28 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +90 -0
- package/dist/outcome.d.ts +0 -1
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +0 -3
- package/dist/overlay.js +1 -1
- package/dist/query.d.ts +4 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +12 -1
- package/dist/reach.d.ts +0 -2
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +17 -28
- package/dist/readiness.d.ts +20 -9
- package/dist/readiness.d.ts.map +1 -1
- package/dist/readiness.js +6 -6
- package/dist/reads.d.ts.map +1 -1
- package/dist/reads.js +3 -1
- package/dist/refresh.d.ts +6 -2
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +60 -22
- package/dist/replica.d.ts +3 -1
- package/dist/replica.d.ts.map +1 -1
- package/dist/room-draft.d.ts +1 -0
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +33 -0
- package/dist/save.js +2 -2
- package/dist/search.d.ts +11 -43
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +0 -296
- package/dist/store.d.ts +17 -36
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +28 -227
- package/dist/stored.d.ts +9 -7
- package/dist/stored.d.ts.map +1 -1
- package/dist/stored.js +46 -40
- package/dist/tables.d.ts +46 -12
- package/dist/tables.d.ts.map +1 -1
- package/dist/tables.js +94 -7
- package/dist/wire.d.ts +0 -4
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +0 -1
- package/dist/words.d.ts +19 -0
- package/dist/words.d.ts.map +1 -0
- package/dist/words.js +150 -0
- package/package.json +11 -18
- package/dist/chat/acts.d.ts +0 -33
- package/dist/chat/acts.d.ts.map +0 -1
- package/dist/chat/acts.js +0 -36
- package/dist/chat/context.d.ts +0 -3
- package/dist/chat/context.d.ts.map +0 -1
- package/dist/chat/context.js +0 -10
- package/dist/chat/earlier.d.ts +0 -10
- package/dist/chat/earlier.d.ts.map +0 -1
- package/dist/chat/earlier.js +0 -54
- package/dist/chat/house.d.ts +0 -25
- package/dist/chat/house.d.ts.map +0 -1
- package/dist/chat/house.js +0 -38
- package/dist/chat/input.d.ts +0 -11
- package/dist/chat/input.d.ts.map +0 -1
- package/dist/chat/input.js +0 -92
- package/dist/chat/kit.d.ts +0 -61
- package/dist/chat/kit.d.ts.map +0 -1
- package/dist/chat/kit.js +0 -123
- package/dist/chat/lasting.d.ts +0 -6
- package/dist/chat/lasting.d.ts.map +0 -1
- package/dist/chat/lasting.js +0 -19
- package/dist/chat/list.d.ts +0 -28
- package/dist/chat/list.d.ts.map +0 -1
- package/dist/chat/list.js +0 -103
- package/dist/chat/markdown.d.ts +0 -21
- package/dist/chat/markdown.d.ts.map +0 -1
- package/dist/chat/markdown.js +0 -246
- package/dist/chat/message.d.ts +0 -7
- package/dist/chat/message.d.ts.map +0 -1
- package/dist/chat/message.js +0 -244
- package/dist/chat/messages.d.ts +0 -30
- package/dist/chat/messages.d.ts.map +0 -1
- package/dist/chat/messages.js +0 -198
- package/dist/chat/name.d.ts +0 -7
- package/dist/chat/name.d.ts.map +0 -1
- package/dist/chat/name.js +0 -37
- package/dist/chat/opened.d.ts +0 -12
- package/dist/chat/opened.d.ts.map +0 -1
- package/dist/chat/opened.js +0 -19
- package/dist/chat/overlay.d.ts +0 -32
- package/dist/chat/overlay.d.ts.map +0 -1
- package/dist/chat/overlay.js +0 -103
- package/dist/chat/parts.d.ts +0 -58
- package/dist/chat/parts.d.ts.map +0 -1
- package/dist/chat/parts.js +0 -120
- package/dist/chat/pieces.d.ts +0 -62
- package/dist/chat/pieces.d.ts.map +0 -1
- package/dist/chat/pieces.js +0 -1110
- package/dist/chat/process.d.ts +0 -20
- package/dist/chat/process.d.ts.map +0 -1
- package/dist/chat/process.js +0 -32
- package/dist/chat/provider.d.ts +0 -70
- package/dist/chat/provider.d.ts.map +0 -1
- package/dist/chat/provider.js +0 -635
- package/dist/chat/question.d.ts +0 -9
- package/dist/chat/question.d.ts.map +0 -1
- package/dist/chat/question.js +0 -69
- package/dist/chat/questions.d.ts +0 -31
- package/dist/chat/questions.d.ts.map +0 -1
- package/dist/chat/questions.js +0 -111
- package/dist/chat/read.d.ts +0 -5
- package/dist/chat/read.d.ts.map +0 -1
- package/dist/chat/read.js +0 -13
- package/dist/chat/ready.d.ts +0 -37
- package/dist/chat/ready.d.ts.map +0 -1
- package/dist/chat/ready.js +0 -93
- package/dist/chat/room-file.d.ts +0 -8
- package/dist/chat/room-file.d.ts.map +0 -1
- package/dist/chat/room-file.js +0 -72
- package/dist/chat/steady.d.ts +0 -3
- package/dist/chat/steady.d.ts.map +0 -1
- package/dist/chat/steady.js +0 -26
- package/dist/chat/style.d.ts +0 -4
- package/dist/chat/style.d.ts.map +0 -1
- package/dist/chat/style.js +0 -306
- package/dist/chat.d.ts +0 -15
- package/dist/chat.d.ts.map +0 -1
- package/dist/chat.js +0 -8
package/dist/bootstrap.js
CHANGED
|
@@ -1,36 +1,18 @@
|
|
|
1
1
|
import { transferIdentity } from './identity.js';
|
|
2
|
-
import { advancement } from './refresh.js';
|
|
2
|
+
import { advancement, pageEntries } from './refresh.js';
|
|
3
3
|
import { unconfirmed } from './transfer.js';
|
|
4
|
+
const NOTHING_DONE = { parts: 0, bytes: 0 };
|
|
4
5
|
const RESUMABLE = new Set([
|
|
5
6
|
'transport-uncertainty',
|
|
6
7
|
'retryable-refusal',
|
|
7
8
|
'unconfirmed',
|
|
8
9
|
]);
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
entries.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
binary: null,
|
|
16
|
-
revision: page.revisions[path] ?? null,
|
|
17
|
-
fileId: page.fileIds?.[path] ?? null,
|
|
18
|
-
change: page.changes[path] ?? null,
|
|
19
|
-
written: page.roomVersion,
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
for (const [path, file] of Object.entries(page.binaryFiles)) {
|
|
23
|
-
entries.push({
|
|
24
|
-
path,
|
|
25
|
-
content: null,
|
|
26
|
-
binary: { state: 'accepted', ...file },
|
|
27
|
-
revision: page.revisions[path] ?? null,
|
|
28
|
-
fileId: page.fileIds?.[path] ?? null,
|
|
29
|
-
change: page.changes[path] ?? null,
|
|
30
|
-
written: null,
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
return { entries, folders: page.folders ?? [] };
|
|
10
|
+
const NOTHING_PRIOR = () => Promise.resolve(new Map());
|
|
11
|
+
async function pageOf(page) {
|
|
12
|
+
return {
|
|
13
|
+
entries: await pageEntries(page, [], page.roomVersion, NOTHING_PRIOR),
|
|
14
|
+
folders: page.folders ?? [],
|
|
15
|
+
};
|
|
34
16
|
}
|
|
35
17
|
function heldTogether(first, second) {
|
|
36
18
|
if (first === null)
|
|
@@ -77,6 +59,7 @@ export async function bootstrapRoom(adapter, authorization, room, held, remodel,
|
|
|
77
59
|
await staging.release(first.key);
|
|
78
60
|
}
|
|
79
61
|
}
|
|
62
|
+
const RESUMED_LOOKUPS = 2;
|
|
80
63
|
function compositionFor(room, models) {
|
|
81
64
|
return {
|
|
82
65
|
model: models.collection,
|
|
@@ -89,43 +72,94 @@ async function bundle(adapter, authorization, room, held, remodel, continuing, s
|
|
|
89
72
|
const locator = room.locator;
|
|
90
73
|
const selection = room.replica.selection;
|
|
91
74
|
let transfer = kept;
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
75
|
+
let lookups = kept === null ? 0 : RESUMED_LOOKUPS;
|
|
76
|
+
let ahead = null;
|
|
77
|
+
const arriving = staging.arriving(locator);
|
|
78
|
+
const asking = async (token) => {
|
|
79
|
+
const looked = token !== null && lookups > 0;
|
|
80
|
+
if (looked)
|
|
81
|
+
lookups -= 1;
|
|
82
|
+
const received = looked ? await staging.received(locator, token) : null;
|
|
95
83
|
const page = await adapter.bootstrap(authorization, {
|
|
96
84
|
locator,
|
|
97
85
|
selection,
|
|
98
|
-
...(
|
|
86
|
+
...(token === null
|
|
87
|
+
? {}
|
|
88
|
+
: { pageToken: token, arriving: (bytes) => arriving.at(token, bytes) }),
|
|
99
89
|
...(pool === null ? {} : { held: pool }),
|
|
90
|
+
...(received === null ? {} : { received }),
|
|
100
91
|
});
|
|
101
|
-
if (page.kind === '
|
|
102
|
-
|
|
103
|
-
return { kind: 'expired', held: key === null ? NO_CONTENT : staging.content(key), key };
|
|
92
|
+
if (token !== null && page.kind === 'bootstrap' && page.received !== undefined) {
|
|
93
|
+
await staging.keep(locator, token, page.received);
|
|
104
94
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
95
|
+
return page;
|
|
96
|
+
};
|
|
97
|
+
try {
|
|
98
|
+
while (transfer === null || transfer.writing !== null || transfer.pageToken !== null) {
|
|
99
|
+
if (!continuing())
|
|
100
|
+
return unconfirmed;
|
|
101
|
+
const writing = transfer?.writing ?? null;
|
|
102
|
+
const asked = writing === null ? (transfer?.pageToken ?? null) : writing.token;
|
|
103
|
+
const fetched = ahead !== null && ahead.token === asked ? ahead : null;
|
|
104
|
+
if (ahead !== fetched)
|
|
105
|
+
ahead?.release();
|
|
106
|
+
ahead = null;
|
|
107
|
+
const turned = fetched?.release ??
|
|
108
|
+
(await staging.turn(locator, transfer === null ? 'listing' : 'downloading'));
|
|
109
|
+
try {
|
|
110
|
+
if (!continuing())
|
|
111
|
+
return unconfirmed;
|
|
112
|
+
const page = await (fetched?.page ?? asking(asked));
|
|
113
|
+
if (page.kind === 'beyond-horizon') {
|
|
114
|
+
const key = transfer?.key ?? null;
|
|
115
|
+
return { kind: 'expired', held: key === null ? NO_CONTENT : staging.content(key), key };
|
|
116
|
+
}
|
|
117
|
+
if (page.kind !== 'bootstrap') {
|
|
118
|
+
if (!RESUMABLE.has(page.kind))
|
|
119
|
+
await staging.abandon(locator);
|
|
120
|
+
return page;
|
|
121
|
+
}
|
|
122
|
+
const later = page.pageToken;
|
|
123
|
+
const spare = later === undefined || !continuing() ? null : staging.spare();
|
|
124
|
+
if (later !== undefined && spare !== null) {
|
|
125
|
+
const answer = asking(later);
|
|
126
|
+
answer.catch(() => { });
|
|
127
|
+
ahead = { token: later, page: answer, release: spare };
|
|
128
|
+
}
|
|
129
|
+
const next = {
|
|
130
|
+
locator,
|
|
131
|
+
transfer: transfer?.transfer ?? transferIdentity(),
|
|
132
|
+
selection,
|
|
133
|
+
from: transfer !== null && adapter.reached(locator, page.roomVersion, transfer.from)
|
|
134
|
+
? transfer.from
|
|
135
|
+
: page.roomVersion,
|
|
136
|
+
last: transfer !== null && !adapter.reached(locator, page.roomVersion, transfer.last)
|
|
137
|
+
? transfer.last
|
|
138
|
+
: page.roomVersion,
|
|
139
|
+
pageToken: later ?? null,
|
|
140
|
+
writing: { token: asked, written: asked === null ? 0 : (writing?.written ?? 0) },
|
|
141
|
+
inventory: page.inventory ?? transfer?.inventory ?? null,
|
|
142
|
+
done: transfer?.done ?? NOTHING_DONE,
|
|
143
|
+
models: remodel(page.models, transfer?.models ?? held),
|
|
144
|
+
key: transfer?.key ?? null,
|
|
145
|
+
};
|
|
146
|
+
const staged = await staging.stage(next, await pageOf(page), compositionFor(room, next.models), page.received ?? null);
|
|
147
|
+
if (staged === null)
|
|
148
|
+
return unconfirmed;
|
|
149
|
+
transfer = staged;
|
|
150
|
+
}
|
|
151
|
+
finally {
|
|
152
|
+
turned();
|
|
153
|
+
}
|
|
109
154
|
}
|
|
110
|
-
const next = {
|
|
111
|
-
locator,
|
|
112
|
-
transfer: transfer?.transfer ?? transferIdentity(),
|
|
113
|
-
selection,
|
|
114
|
-
from: transfer !== null && adapter.reached(locator, page.roomVersion, transfer.from)
|
|
115
|
-
? transfer.from
|
|
116
|
-
: page.roomVersion,
|
|
117
|
-
last: transfer !== null && !adapter.reached(locator, page.roomVersion, transfer.last)
|
|
118
|
-
? transfer.last
|
|
119
|
-
: page.roomVersion,
|
|
120
|
-
pageToken: page.pageToken ?? null,
|
|
121
|
-
models: remodel(page.models, transfer?.models ?? held),
|
|
122
|
-
key: transfer?.key ?? null,
|
|
123
|
-
};
|
|
124
|
-
const key = await staging.stage(next, pageOf(page), compositionFor(room, next.models));
|
|
125
|
-
if (key === null)
|
|
126
|
-
return unconfirmed;
|
|
127
|
-
transfer = { ...next, key };
|
|
128
155
|
}
|
|
156
|
+
finally {
|
|
157
|
+
ahead?.release();
|
|
158
|
+
arriving.end();
|
|
159
|
+
}
|
|
160
|
+
await staging.turn(locator, 'replaying');
|
|
161
|
+
if (!continuing())
|
|
162
|
+
return unconfirmed;
|
|
129
163
|
const record = {
|
|
130
164
|
locator,
|
|
131
165
|
name: room.name,
|
|
@@ -138,11 +172,14 @@ async function bundle(adapter, authorization, room, held, remodel, continuing, s
|
|
|
138
172
|
providerOwnedPaths: room.providerOwnedPaths,
|
|
139
173
|
roomVersion: transfer.from,
|
|
140
174
|
transfer: transfer.transfer,
|
|
175
|
+
inventory: transfer.inventory,
|
|
141
176
|
key: transfer.key,
|
|
142
177
|
};
|
|
143
|
-
const
|
|
178
|
+
const due = [room.roomVersion, ...staging.announced(locator)];
|
|
179
|
+
const last = transfer.last;
|
|
180
|
+
const reconciled = last === transfer.from && due.every((version) => adapter.reached(locator, last, version))
|
|
144
181
|
? { kind: 'still-current' }
|
|
145
|
-
: await advancement(adapter, authorization, record, remodel, continuing, await staging.refreshing(record.key));
|
|
182
|
+
: await advancement(adapter, authorization, record, remodel, continuing, await staging.refreshing(locator, record.key));
|
|
146
183
|
if (reconciled.kind === 'advanced' || reconciled.kind === 'still-current') {
|
|
147
184
|
const refreshed = reconciled.kind === 'advanced';
|
|
148
185
|
const result = refreshed ? reconciled.record : record;
|
package/dist/change-set.d.ts
CHANGED
|
@@ -2,11 +2,6 @@ export type DocumentChange = {
|
|
|
2
2
|
readonly locator: string;
|
|
3
3
|
readonly path: string | null;
|
|
4
4
|
};
|
|
5
|
-
export type MessageChange = {
|
|
6
|
-
conversation: string;
|
|
7
|
-
identity: string;
|
|
8
|
-
text: string | null;
|
|
9
|
-
};
|
|
10
5
|
export type ChangeSet = {
|
|
11
6
|
documents: readonly DocumentChange[];
|
|
12
7
|
drafts: readonly {
|
|
@@ -16,7 +11,6 @@ export type ChangeSet = {
|
|
|
16
11
|
rooms: readonly string[];
|
|
17
12
|
queues: readonly string[];
|
|
18
13
|
presentations: readonly string[];
|
|
19
|
-
messages: readonly MessageChange[];
|
|
20
14
|
conversations: readonly string[];
|
|
21
15
|
};
|
|
22
16
|
type Changed = {
|
|
@@ -27,7 +21,7 @@ type Changed = {
|
|
|
27
21
|
presentation?: string;
|
|
28
22
|
};
|
|
29
23
|
export declare function changeSet(locator: string, changed?: Changed): ChangeSet;
|
|
30
|
-
export declare function conversationChangeSet(
|
|
24
|
+
export declare function conversationChangeSet(conversations: readonly string[]): ChangeSet;
|
|
31
25
|
export declare function mergeChangeSets(sets: readonly ChangeSet[]): ChangeSet;
|
|
32
26
|
export declare function touches(set: ChangeSet, locator: string, path: string): boolean;
|
|
33
27
|
export {};
|
package/dist/change-set.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-set.d.ts","sourceRoot":"","sources":["../src/change-set.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAExF,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"change-set.d.ts","sourceRoot":"","sources":["../src/change-set.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAExF,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;IACrC,MAAM,EAAE,SAAS;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrD,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACrC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,OAAY,GAAG,SAAS,CAe3E;AAED,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CASjF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,CASrE;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAI9E"}
|
package/dist/change-set.js
CHANGED
|
@@ -10,18 +10,16 @@ export function changeSet(locator, changed = {}) {
|
|
|
10
10
|
rooms: changed.room ? [locator] : [],
|
|
11
11
|
queues: changed.queue ? [locator] : [],
|
|
12
12
|
presentations: changed.presentation === undefined ? [] : [changed.presentation],
|
|
13
|
-
messages: [],
|
|
14
13
|
conversations: [],
|
|
15
14
|
};
|
|
16
15
|
}
|
|
17
|
-
export function conversationChangeSet(
|
|
16
|
+
export function conversationChangeSet(conversations) {
|
|
18
17
|
return {
|
|
19
18
|
documents: [],
|
|
20
19
|
drafts: [],
|
|
21
20
|
rooms: [],
|
|
22
21
|
queues: [],
|
|
23
22
|
presentations: [],
|
|
24
|
-
messages,
|
|
25
23
|
conversations: [...new Set(conversations)],
|
|
26
24
|
};
|
|
27
25
|
}
|
|
@@ -32,7 +30,6 @@ export function mergeChangeSets(sets) {
|
|
|
32
30
|
rooms: [...new Set(sets.flatMap((set) => set.rooms))],
|
|
33
31
|
queues: [...new Set(sets.flatMap((set) => set.queues))],
|
|
34
32
|
presentations: [...new Set(sets.flatMap((set) => set.presentations))],
|
|
35
|
-
messages: sets.flatMap((set) => set.messages),
|
|
36
33
|
conversations: [...new Set(sets.flatMap((set) => set.conversations))],
|
|
37
34
|
};
|
|
38
35
|
}
|
package/dist/client.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ import type { AppRoom, ConnectionRefusal, HistoryQuery, RoomSchemas, SavedParts,
|
|
|
2
2
|
import type { Member, ServiceMode } from './adapter.js';
|
|
3
3
|
import type { ChatDraft, ConversationAgent, ConversationEntry, ConversationOptions, ConversationView } from './conversation.js';
|
|
4
4
|
import { type Observation } from './observation.js';
|
|
5
|
-
import type { BinaryReference } from './binary.js';
|
|
6
5
|
import type { ChosenFile } from './file.js';
|
|
7
6
|
import type { BinaryAnswer, BinaryLinkAnswer, CallResult, HistoryAnswer, Offline, QueueEntry, Resolution } from './outcome.js';
|
|
8
7
|
import type { DocumentQuery, DocumentResult, GroupQuery, GroupResult, PendingResult } from './query.js';
|
|
@@ -22,7 +21,7 @@ export type MdRuntimeClient = {
|
|
|
22
21
|
roomDraft: {
|
|
23
22
|
list(): Promise<readonly RoomDraft[]>;
|
|
24
23
|
read(room: string, path: string): Promise<RoomDraft | null>;
|
|
25
|
-
write(room: string, path: string, revision: string | null, parts: RoomDraftParts): Promise<RoomDraftWrite>;
|
|
24
|
+
write(room: string, path: string, revision: string | null, parts: RoomDraftParts, next?: string): Promise<RoomDraftWrite>;
|
|
26
25
|
discard(room: string, path: string, revision: string): Promise<RoomDraftWrite>;
|
|
27
26
|
};
|
|
28
27
|
save(room: string, roomDrafts: readonly SavedRoomDraft[]): Promise<SaveResult>;
|
|
@@ -54,7 +53,6 @@ export type MdRuntimeClient = {
|
|
|
54
53
|
binaryFile: {
|
|
55
54
|
read(room: string, path: string, revision?: string): Promise<BinaryAnswer>;
|
|
56
55
|
link(room: string, path: string, revision?: string): Promise<BinaryLinkAnswer>;
|
|
57
|
-
readReference(reference: BinaryReference): Promise<BinaryAnswer>;
|
|
58
56
|
};
|
|
59
57
|
call(name: string, input: unknown): Promise<CallResult>;
|
|
60
58
|
reached(locator: string, roomVersion: string, path?: string): Promise<boolean>;
|
|
@@ -86,6 +84,7 @@ export type MdRuntimeClient = {
|
|
|
86
84
|
export declare function connectMdRuntime(port: RuntimePort): MdRuntimeClient;
|
|
87
85
|
export declare function inTurn(client: MdRuntimeClient, work: () => Promise<void>): Promise<void>;
|
|
88
86
|
export { chainedWindows, type WindowAnswer, type WindowChain } from './chain.js';
|
|
87
|
+
export { roomDraftRevision } from './identity.js';
|
|
89
88
|
export type { Observation } from './observation.js';
|
|
90
89
|
export type { Open } from './open.js';
|
|
91
90
|
export { unanswered, type RuntimePort, type WireMember } from './wire.js';
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,cAAc,EACd,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAY,KAAK,WAAW,EAAiB,MAAM,kBAAkB,CAAC;AAE7E,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -193,7 +193,7 @@ export function connectMdRuntime(port) {
|
|
|
193
193
|
roomDraft: {
|
|
194
194
|
list: () => ask('roomDraft.list', []),
|
|
195
195
|
read: (room, path) => ask('roomDraft.read', [room, path]),
|
|
196
|
-
write: (room, path, revision, parts) => ask('roomDraft.write', [room, path, revision, parts]),
|
|
196
|
+
write: (room, path, revision, parts, next) => ask('roomDraft.write', next === undefined ? [room, path, revision, parts] : [room, path, revision, parts, next]),
|
|
197
197
|
discard: (room, path, revision) => ask('roomDraft.discard', [room, path, revision]),
|
|
198
198
|
},
|
|
199
199
|
save: (room, roomDrafts) => ask('save', [room, roomDrafts]),
|
|
@@ -225,7 +225,6 @@ export function connectMdRuntime(port) {
|
|
|
225
225
|
binaryFile: {
|
|
226
226
|
read: (room, path, revision) => ask('binaryFile.read', [room, path, revision]).then(streamed),
|
|
227
227
|
link: (room, path, revision) => ask('binaryFile.link', [room, path, revision]),
|
|
228
|
-
readReference: (reference) => ask('binaryFile.readReference', [reference]).then(streamed),
|
|
229
228
|
},
|
|
230
229
|
call: (name, input) => ask('call', [name, input]),
|
|
231
230
|
reached: (locator, roomVersion, path) => ask('reached', [locator, roomVersion, path]),
|
|
@@ -245,4 +244,5 @@ export function inTurn(client, work) {
|
|
|
245
244
|
return turn;
|
|
246
245
|
}
|
|
247
246
|
export { chainedWindows } from './chain.js';
|
|
247
|
+
export { roomDraftRevision } from './identity.js';
|
|
248
248
|
export { unanswered } from './wire.js';
|
package/dist/compile.d.ts
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import type { Plan, QueryRows } from './query.js';
|
|
2
|
-
import type { Connection } from './tables.js';
|
|
2
|
+
import type { Connection, Value } from './tables.js';
|
|
3
3
|
export type QueryRoom = {
|
|
4
4
|
readonly locator: string;
|
|
5
5
|
readonly key: number;
|
|
6
6
|
};
|
|
7
|
+
export type Fragment = {
|
|
8
|
+
readonly sql: string;
|
|
9
|
+
readonly bind: readonly Value[];
|
|
10
|
+
};
|
|
7
11
|
export type QueryAnswer = QueryRows & {
|
|
8
12
|
readonly more?: string;
|
|
9
13
|
};
|
|
14
|
+
export declare function selected(connection: Connection, plan: Plan, rooms: readonly QueryRoom[]): Fragment;
|
|
10
15
|
export declare function answerQuery(connection: Connection, plan: Plan, rooms: readonly QueryRoom[], budget?: number | null): QueryAnswer;
|
|
11
16
|
//# sourceMappingURL=compile.d.ts.map
|
package/dist/compile.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAOV,IAAI,EAGJ,SAAS,EAIV,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAOV,IAAI,EAGJ,SAAS,EAIV,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,UAAU,EAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAU1D,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,KAAK,EAAE,CAAA;CAAE,CAAC;AA+pBjF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AA8SjE,wBAAgB,QAAQ,CACtB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,SAAS,SAAS,EAAE,GAC1B,QAAQ,CAEV;AAED,wBAAgB,WAAW,CACzB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,SAAS,SAAS,EAAE,EAC3B,MAAM,GAAE,MAAM,GAAG,IAAW,GAC3B,WAAW,CAUb"}
|
package/dist/compile.js
CHANGED
|
@@ -427,6 +427,7 @@ function documentOf(shape, room, row, linked) {
|
|
|
427
427
|
const path = row.path;
|
|
428
428
|
const type = row.type;
|
|
429
429
|
const fileId = row.file_id ?? null;
|
|
430
|
+
const revision = row.revision ?? null;
|
|
430
431
|
if (type === null) {
|
|
431
432
|
const binary = row.binary === null ? null : JSON.parse(row.binary);
|
|
432
433
|
const content = row.content ?? null;
|
|
@@ -436,12 +437,13 @@ function documentOf(shape, room, row, linked) {
|
|
|
436
437
|
...(binary === null
|
|
437
438
|
? {}
|
|
438
439
|
: {
|
|
439
|
-
binaryFile: binaryRecord(path, binary,
|
|
440
|
+
binaryFile: binaryRecord(path, binary, revision ?? undefined),
|
|
440
441
|
}),
|
|
441
442
|
...(shape.markdown && content !== null && settingsTextPath(path)
|
|
442
443
|
? { markdown: content }
|
|
443
444
|
: {}),
|
|
444
445
|
...(shape.fileId ? { fileId } : {}),
|
|
446
|
+
...(shape.revision ? { revision } : {}),
|
|
445
447
|
};
|
|
446
448
|
}
|
|
447
449
|
const read = bodied(shape) ? parse(row.content, path) : null;
|
|
@@ -470,6 +472,7 @@ function documentOf(shape, room, row, linked) {
|
|
|
470
472
|
}
|
|
471
473
|
: {}),
|
|
472
474
|
...(shape.fileId ? { fileId } : {}),
|
|
475
|
+
...(shape.revision ? { revision } : {}),
|
|
473
476
|
};
|
|
474
477
|
}
|
|
475
478
|
function backlinksOf(connection, bound, rows) {
|
|
@@ -694,13 +697,19 @@ function groups(connection, bound, plan, shape) {
|
|
|
694
697
|
...(total === undefined ? {} : { total }),
|
|
695
698
|
};
|
|
696
699
|
}
|
|
697
|
-
|
|
698
|
-
|
|
700
|
+
function boundOf(connection, plan, rooms) {
|
|
701
|
+
return {
|
|
699
702
|
rooms: [...rooms].sort((left, right) => left.locator < right.locator ? -1 : left.locator > right.locator ? 1 : 0),
|
|
700
703
|
keys: new Map(rooms.map(({ locator, key }) => [locator, key])),
|
|
701
704
|
reach: plan.reach,
|
|
702
705
|
collate: collating(connection),
|
|
703
706
|
};
|
|
707
|
+
}
|
|
708
|
+
export function selected(connection, plan, rooms) {
|
|
709
|
+
return filtered(boundOf(connection, plan, rooms), plan);
|
|
710
|
+
}
|
|
711
|
+
export function answerQuery(connection, plan, rooms, budget = null) {
|
|
712
|
+
const bound = boundOf(connection, plan, rooms);
|
|
704
713
|
if (rooms.length === 0) {
|
|
705
714
|
return plan.shape.kind === 'groups'
|
|
706
715
|
? { groups: [], ...(plan.total ? { total: 0 } : {}) }
|
package/dist/connection.d.ts
CHANGED
|
@@ -7,14 +7,13 @@ import { type Adapter, type Authorization, type Member, type ProviderRefusal, ty
|
|
|
7
7
|
import { type ChatDraftSurface, type ConversationAgent, type ConversationEntry, type ConversationOptions, type ConversationSurface, type ConversationView } from './conversation.js';
|
|
8
8
|
import { type WrittenBy } from './change.js';
|
|
9
9
|
import type { Open } from './open.js';
|
|
10
|
-
import { type BinaryReference } from './binary.js';
|
|
11
10
|
import { type BinaryLinkAnswer, type CallResult, type HeldBinaryAnswer, type HistoryAnswer, type QueueEntry, type Resolution } from './outcome.js';
|
|
12
11
|
import { type Recovery } from './recovery.js';
|
|
13
12
|
import { type SaveRefusal } from './save.js';
|
|
14
13
|
import { type RoomDraft, type RoomDraftParts, type RoomDraftWrite } from './room-draft.js';
|
|
15
14
|
import { type SyncStatus } from './status.js';
|
|
16
15
|
import { type RuntimeShell } from './durability.js';
|
|
17
|
-
import { type
|
|
16
|
+
import { type CodeAvailability, type Persistence, type Readiness, type SearchObligation, type Space } from './readiness.js';
|
|
18
17
|
import type { RuntimeDatabase } from './tables.js';
|
|
19
18
|
import { type NarrowedView, type PortReach, type RuntimeView } from './reach.js';
|
|
20
19
|
export type AppTypedSelection = {
|
|
@@ -73,7 +72,7 @@ export type SavedParts = {
|
|
|
73
72
|
export type RoomDraftSurface = {
|
|
74
73
|
list(): Promise<readonly RoomDraft[]>;
|
|
75
74
|
read(room: string, path: string): Promise<RoomDraft | null>;
|
|
76
|
-
write(room: string, path: string, revision: string | null, parts: unknown): Promise<RoomDraftWrite>;
|
|
75
|
+
write(room: string, path: string, revision: string | null, parts: unknown, next?: string): Promise<RoomDraftWrite>;
|
|
77
76
|
discard(room: string, path: string, revision: string): Promise<RoomDraftWrite>;
|
|
78
77
|
};
|
|
79
78
|
export type PresentationSurface = {
|
|
@@ -84,7 +83,6 @@ export type PresentationSurface = {
|
|
|
84
83
|
export type BinaryFileSurface = {
|
|
85
84
|
read(room: string, path: string, revision?: string): Promise<HeldBinaryAnswer>;
|
|
86
85
|
link(room: string, path: string, revision?: string): Promise<BinaryLinkAnswer>;
|
|
87
|
-
readReference(reference: BinaryReference): Promise<HeldBinaryAnswer>;
|
|
88
86
|
part(file: string, part: number): Promise<Uint8Array | null>;
|
|
89
87
|
};
|
|
90
88
|
export type HistoryQuery = {
|
|
@@ -138,7 +136,7 @@ export type RuntimeTopic = 'rooms' | 'readiness' | 'connection-refusal' | 'stora
|
|
|
138
136
|
export type ReadinessPort = {
|
|
139
137
|
readonly target: string;
|
|
140
138
|
readonly code: CodeAvailability;
|
|
141
|
-
readonly
|
|
139
|
+
readonly space: Space | null;
|
|
142
140
|
readonly search: SearchObligation;
|
|
143
141
|
};
|
|
144
142
|
export type ComposedRuntime = RuntimeView & {
|
|
@@ -146,6 +144,7 @@ export type ComposedRuntime = RuntimeView & {
|
|
|
146
144
|
stop(): Promise<void>;
|
|
147
145
|
lose(locators: readonly string[]): Promise<void>;
|
|
148
146
|
persisted(answer: Persistence): void;
|
|
147
|
+
shown(onScreen: boolean): void;
|
|
149
148
|
within(reach: PortReach | null, port: ReadinessPort): NarrowedView;
|
|
150
149
|
};
|
|
151
150
|
export declare function composeRuntime(options: MdRuntimeOptions): ComposedRuntime;
|
package/dist/connection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAoB,KAAK,WAAW,EAAqB,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,WAAW,EAEhB,KAAK,aAAa,EAMnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAgB,KAAK,SAAS,EAAe,MAAM,WAAW,CAAC;AAEtE,OAAO,
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
|