@agentshouse/mdruntime 0.1.0-c97456d63baba → 0.1.0-c9b1e59e5baeb
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 +221 -221
- package/README.md +8 -8
- package/dist/adapter.d.ts +35 -6
- package/dist/adapter.d.ts.map +1 -1
- package/dist/bootstrap.d.ts +2 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +5 -1
- package/dist/change-set.d.ts +5 -2
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +8 -2
- package/dist/chat/earlier.d.ts +10 -0
- package/dist/chat/earlier.d.ts.map +1 -0
- package/dist/chat/earlier.js +54 -0
- package/dist/chat/kit.js +1 -1
- package/dist/chat/list.d.ts +2 -1
- package/dist/chat/list.d.ts.map +1 -1
- package/dist/chat/list.js +40 -4
- package/dist/chat/markdown.d.ts +1 -0
- package/dist/chat/markdown.d.ts.map +1 -1
- package/dist/chat/markdown.js +78 -20
- package/dist/chat/message.d.ts.map +1 -1
- package/dist/chat/message.js +9 -2
- package/dist/chat/messages.d.ts.map +1 -1
- package/dist/chat/messages.js +36 -16
- package/dist/chat/overlay.d.ts +1 -0
- package/dist/chat/overlay.d.ts.map +1 -1
- package/dist/chat/overlay.js +10 -0
- package/dist/chat/pieces.d.ts +62 -0
- package/dist/chat/pieces.d.ts.map +1 -0
- package/dist/chat/pieces.js +1110 -0
- package/dist/chat/provider.d.ts +1 -0
- package/dist/chat/provider.d.ts.map +1 -1
- package/dist/chat/provider.js +22 -14
- package/dist/chat/question.d.ts +1 -1
- package/dist/chat/question.d.ts.map +1 -1
- package/dist/chat/question.js +7 -18
- package/dist/chat/ready.d.ts +1 -1
- package/dist/chat/ready.d.ts.map +1 -1
- package/dist/chat/ready.js +1 -1
- package/dist/chat/steady.d.ts +3 -0
- package/dist/chat/steady.d.ts.map +1 -0
- package/dist/chat/steady.js +26 -0
- package/dist/chat/style.js +1 -1
- package/dist/chat.d.ts +2 -2
- package/dist/chat.d.ts.map +1 -1
- package/dist/chat.js +2 -2
- package/dist/client.d.ts +6 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +16 -5
- package/dist/collection.d.ts +4 -3
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +128 -63
- package/dist/connection.d.ts +13 -5
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +506 -228
- package/dist/conversation.d.ts +11 -0
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +195 -41
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +3 -2
- package/dist/host.d.ts +9 -7
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +58 -9
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/memory.d.ts +7 -3
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +24 -11
- package/dist/observation.d.ts +2 -0
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +9 -3
- package/dist/outcome.d.ts +8 -2
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +3 -0
- package/dist/overlay.d.ts +5 -4
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +197 -132
- package/dist/query.d.ts +27 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +36 -7
- package/dist/reach.d.ts +1 -2
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +17 -4
- package/dist/react.d.ts +3 -3
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +7 -17
- package/dist/read-side.d.ts +3 -1
- package/dist/read-side.d.ts.map +1 -1
- package/dist/read-side.js +256 -69
- package/dist/reads.d.ts +11 -0
- package/dist/reads.d.ts.map +1 -0
- package/dist/reads.js +98 -0
- package/dist/refresh.d.ts +4 -4
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +39 -14
- package/dist/replica.d.ts +11 -5
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +79 -41
- package/dist/room-draft.d.ts +12 -0
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +11 -12
- package/dist/rows.d.ts +3 -1
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +8 -1
- package/dist/save.d.ts +4 -2
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +195 -111
- package/dist/search.d.ts +27 -6
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +89 -7
- package/dist/seed.d.ts +16 -0
- package/dist/seed.d.ts.map +1 -0
- package/dist/seed.js +75 -0
- package/dist/shared.d.ts +4 -0
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +63 -33
- package/dist/store.d.ts +20 -4
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +404 -317
- package/dist/turn.d.ts +5 -3
- package/dist/turn.d.ts.map +1 -1
- package/dist/turn.js +26 -7
- package/dist/windows.d.ts +26 -0
- package/dist/windows.d.ts.map +1 -0
- package/dist/windows.js +93 -0
- package/dist/wire.d.ts +16 -0
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +4 -0
- package/package.json +2 -2
- package/dist/acquisition.d.ts +0 -14
- package/dist/acquisition.d.ts.map +0 -1
- package/dist/acquisition.js +0 -24
package/dist/search.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
|
package/dist/search.js
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import MiniSearch from 'minisearch';
|
|
2
2
|
import { indexGeneration } from './identity.js';
|
|
3
|
-
import { invalid, known, limitOf, plain, } from './query.js';
|
|
3
|
+
import { flag, invalid, known, limitOf, plain, } from './query.js';
|
|
4
|
+
import { beneath } from './paths.js';
|
|
4
5
|
import { inUnits, ROW_WEIGHT } from './turn.js';
|
|
6
|
+
import { decodedCursor } from './windows.js';
|
|
7
|
+
export function undeclaredSearch() {
|
|
8
|
+
return {
|
|
9
|
+
kind: 'undeclared',
|
|
10
|
+
code: 'search-undeclared',
|
|
11
|
+
fields: { name: 'local_search' },
|
|
12
|
+
retryable: false,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
5
15
|
const FIELDS = ['fields', 'sections', 'preamble', 'path', 'text'];
|
|
6
16
|
function documentId(room, path) {
|
|
7
17
|
return JSON.stringify(['document', room, path]);
|
|
@@ -18,10 +28,36 @@ function scalars(value) {
|
|
|
18
28
|
return Object.values(value).flatMap(scalars);
|
|
19
29
|
return [String(value)];
|
|
20
30
|
}
|
|
31
|
+
function hitCursor(input) {
|
|
32
|
+
if (input === null)
|
|
33
|
+
return null;
|
|
34
|
+
if (!Array.isArray(input))
|
|
35
|
+
return undefined;
|
|
36
|
+
if (input.length === 0)
|
|
37
|
+
return [];
|
|
38
|
+
const [score, first, second] = input;
|
|
39
|
+
return input.length === 3 &&
|
|
40
|
+
typeof score === 'number' &&
|
|
41
|
+
typeof first === 'string' &&
|
|
42
|
+
typeof second === 'string'
|
|
43
|
+
? [score, first, second]
|
|
44
|
+
: undefined;
|
|
45
|
+
}
|
|
46
|
+
function searchAfter(input) {
|
|
47
|
+
if (input === undefined)
|
|
48
|
+
return null;
|
|
49
|
+
const decoded = typeof input === 'string' ? decodedCursor(input) : null;
|
|
50
|
+
const documents = decoded?.length === 2 ? hitCursor(decoded[0]) : undefined;
|
|
51
|
+
const messages = decoded?.length === 2 ? hitCursor(decoded[1]) : undefined;
|
|
52
|
+
if (documents === undefined || messages === undefined) {
|
|
53
|
+
invalid('after', 'expects the next an earlier search returned');
|
|
54
|
+
}
|
|
55
|
+
return [documents, messages];
|
|
56
|
+
}
|
|
21
57
|
export function searchPlanOf(input) {
|
|
22
58
|
if (!plain(input))
|
|
23
59
|
invalid('search', 'expects a search object');
|
|
24
|
-
known(input, ['text', 'documents', 'conversations', 'limit'], '');
|
|
60
|
+
known(input, ['text', 'documents', 'collection', 'conversations', 'limit', 'after', 'total'], '');
|
|
25
61
|
if (typeof input.text !== 'string')
|
|
26
62
|
invalid('text', 'expects text');
|
|
27
63
|
const conversations = input.conversations;
|
|
@@ -32,10 +68,34 @@ export function searchPlanOf(input) {
|
|
|
32
68
|
return {
|
|
33
69
|
text: input.text,
|
|
34
70
|
documents: input.documents,
|
|
71
|
+
collection: flag(input.collection, 'collection'),
|
|
35
72
|
conversations: conversations ?? null,
|
|
36
73
|
limit: limitOf(input.limit),
|
|
74
|
+
after: searchAfter(input.after),
|
|
75
|
+
total: flag(input.total, 'total'),
|
|
37
76
|
};
|
|
38
77
|
}
|
|
78
|
+
function pair(left, right) {
|
|
79
|
+
if (left[0] !== right[0])
|
|
80
|
+
return left[0] < right[0] ? -1 : 1;
|
|
81
|
+
if (left[1] !== right[1])
|
|
82
|
+
return left[1] < right[1] ? -1 : 1;
|
|
83
|
+
return 0;
|
|
84
|
+
}
|
|
85
|
+
function hitWindow(found, cursor, limit, tie) {
|
|
86
|
+
if (cursor === null)
|
|
87
|
+
return { kept: [], cursor: null };
|
|
88
|
+
const start = cursor.length === 0
|
|
89
|
+
? 0
|
|
90
|
+
: found.findIndex((hit) => hit.score < cursor[0] ||
|
|
91
|
+
(hit.score === cursor[0] && pair(tie(hit), [cursor[1], cursor[2]]) > 0));
|
|
92
|
+
const following = start === -1 ? [] : found.slice(start);
|
|
93
|
+
if (limit === null || following.length <= limit)
|
|
94
|
+
return { kept: following, cursor: null };
|
|
95
|
+
const kept = following.slice(0, limit);
|
|
96
|
+
const last = kept[kept.length - 1];
|
|
97
|
+
return { kept, cursor: last === undefined ? cursor : [last.score, ...tie(last)] };
|
|
98
|
+
}
|
|
39
99
|
export function createSearchIndex(source) {
|
|
40
100
|
const generation = indexGeneration();
|
|
41
101
|
const index = new MiniSearch({ fields: FIELDS });
|
|
@@ -99,14 +159,16 @@ export function createSearchIndex(source) {
|
|
|
99
159
|
});
|
|
100
160
|
return catching;
|
|
101
161
|
}
|
|
102
|
-
function ranked(text, entries, keep,
|
|
162
|
+
function ranked(text, entries, keep, tie) {
|
|
103
163
|
const found = index.search(text, {
|
|
104
164
|
filter: ({ id }) => {
|
|
105
165
|
const entry = entries.get(id);
|
|
106
166
|
return entry !== undefined && keep(entry, id);
|
|
107
167
|
},
|
|
108
168
|
});
|
|
109
|
-
|
|
169
|
+
found.sort((left, right) => right.score - left.score ||
|
|
170
|
+
pair(tie(entries.get(left.id)), tie(entries.get(right.id))));
|
|
171
|
+
return found.map(({ id, score, match }) => ({
|
|
110
172
|
...entries.get(id),
|
|
111
173
|
score,
|
|
112
174
|
match,
|
|
@@ -174,14 +236,34 @@ export function createSearchIndex(source) {
|
|
|
174
236
|
},
|
|
175
237
|
changes: () => changes,
|
|
176
238
|
caughtUp,
|
|
177
|
-
search({ text, limit }, selected, named) {
|
|
239
|
+
search({ text, limit, after, total }, selected, named, within, selections) {
|
|
178
240
|
const chosen = selected === null
|
|
179
241
|
? null
|
|
180
242
|
: new Set(selected.map(({ room, path }) => documentId(room, path)));
|
|
181
243
|
const asked = new Set(named);
|
|
244
|
+
const documentTie = ({ room, path }) => [room, path];
|
|
245
|
+
const messageTie = ({ conversation, identity }) => [conversation, identity];
|
|
246
|
+
const foundDocuments = ranked(text, documents, ({ room, path }, id) => (chosen === null || chosen.has(id)) &&
|
|
247
|
+
(within === null || within.has(room)) &&
|
|
248
|
+
!(selections?.get(room) ?? []).some((root) => beneath(root, path)), documentTie);
|
|
249
|
+
const foundMessages = ranked(text, messages, ({ conversation }) => asked.has(conversation), messageTie);
|
|
250
|
+
const [documentsAfter, messagesAfter] = after ?? [[], []];
|
|
251
|
+
const documentWindow = hitWindow(foundDocuments, documentsAfter, limit, documentTie);
|
|
252
|
+
const messageWindow = hitWindow(foundMessages, messagesAfter, limit, messageTie);
|
|
253
|
+
const more = documentWindow.cursor !== null || messageWindow.cursor !== null;
|
|
182
254
|
return {
|
|
183
|
-
documents:
|
|
184
|
-
|
|
255
|
+
documents: documentWindow.kept.map(({ match, ...hit }) => ({
|
|
256
|
+
...hit,
|
|
257
|
+
matches: match,
|
|
258
|
+
})),
|
|
259
|
+
messages: messageWindow.kept.map(({ match, ...hit }) => ({
|
|
260
|
+
...hit,
|
|
261
|
+
matches: match,
|
|
262
|
+
})),
|
|
263
|
+
...(more ? { next: JSON.stringify([documentWindow.cursor, messageWindow.cursor]) } : {}),
|
|
264
|
+
...(total
|
|
265
|
+
? { total: { documents: foundDocuments.length, messages: foundMessages.length } }
|
|
266
|
+
: {}),
|
|
185
267
|
};
|
|
186
268
|
},
|
|
187
269
|
};
|
package/dist/seed.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { KeyedResult } from './observation.js';
|
|
2
|
+
import type { QueryRows } from './query.js';
|
|
3
|
+
export type EntrySeed = {
|
|
4
|
+
readonly at: Readonly<Record<string, string>>;
|
|
5
|
+
readonly queries: readonly {
|
|
6
|
+
readonly query: unknown;
|
|
7
|
+
readonly rows: QueryRows;
|
|
8
|
+
}[];
|
|
9
|
+
};
|
|
10
|
+
export type Seeded = {
|
|
11
|
+
readonly rows: QueryRows;
|
|
12
|
+
readonly at: Readonly<Record<string, string>>;
|
|
13
|
+
};
|
|
14
|
+
export declare function entrySeedOf(value: unknown): EntrySeed | null;
|
|
15
|
+
export declare function seededResult(seed: Seeded): KeyedResult;
|
|
16
|
+
//# sourceMappingURL=seed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAA4C,SAAS,EAAE,MAAM,YAAY,CAAC;AAGtF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;KAAE,EAAE,CAAC;CACpF,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAAE,CAAC;AAwCjG,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAe5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAoBtD"}
|
package/dist/seed.js
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { documentKey } from './rows.js';
|
|
2
|
+
function plain(value) {
|
|
3
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
4
|
+
}
|
|
5
|
+
function windowOf(value) {
|
|
6
|
+
const { next, total } = value;
|
|
7
|
+
if (next !== undefined && typeof next !== 'string')
|
|
8
|
+
return null;
|
|
9
|
+
if (total !== undefined && !Number.isSafeInteger(total))
|
|
10
|
+
return null;
|
|
11
|
+
return {
|
|
12
|
+
...(next === undefined ? {} : { next }),
|
|
13
|
+
...(total === undefined ? {} : { total: total }),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function rowsOf(value) {
|
|
17
|
+
if (!plain(value))
|
|
18
|
+
return null;
|
|
19
|
+
const window = windowOf(value);
|
|
20
|
+
if (window === null)
|
|
21
|
+
return null;
|
|
22
|
+
if (Array.isArray(value.groups)) {
|
|
23
|
+
const groups = value.groups;
|
|
24
|
+
return groups.every((group) => plain(group) && Array.isArray(group.key) && typeof group.count === 'number')
|
|
25
|
+
? { groups: groups, ...window }
|
|
26
|
+
: null;
|
|
27
|
+
}
|
|
28
|
+
if (!Array.isArray(value.documents))
|
|
29
|
+
return null;
|
|
30
|
+
const documents = value.documents;
|
|
31
|
+
return documents.every((document) => plain(document) && typeof document.room === 'string' && typeof document.path === 'string')
|
|
32
|
+
? { documents: documents, ...window }
|
|
33
|
+
: null;
|
|
34
|
+
}
|
|
35
|
+
export function entrySeedOf(value) {
|
|
36
|
+
if (!plain(value) || !plain(value.at) || !Array.isArray(value.queries))
|
|
37
|
+
return null;
|
|
38
|
+
const at = {};
|
|
39
|
+
for (const [room, version] of Object.entries(value.at)) {
|
|
40
|
+
if (typeof version !== 'string')
|
|
41
|
+
return null;
|
|
42
|
+
at[room] = version;
|
|
43
|
+
}
|
|
44
|
+
const queries = [];
|
|
45
|
+
for (const entry of value.queries) {
|
|
46
|
+
if (!plain(entry) || !plain(entry.query))
|
|
47
|
+
return null;
|
|
48
|
+
const rows = rowsOf(entry.rows);
|
|
49
|
+
if (rows === null)
|
|
50
|
+
return null;
|
|
51
|
+
queries.push({ query: entry.query, rows });
|
|
52
|
+
}
|
|
53
|
+
return { at, queries };
|
|
54
|
+
}
|
|
55
|
+
export function seededResult(seed) {
|
|
56
|
+
const coverage = {
|
|
57
|
+
rooms: Object.entries(seed.at).map(([room, generation]) => ({
|
|
58
|
+
room,
|
|
59
|
+
generation,
|
|
60
|
+
current: false,
|
|
61
|
+
})),
|
|
62
|
+
indexes: [],
|
|
63
|
+
overlay: [],
|
|
64
|
+
};
|
|
65
|
+
if ('groups' in seed.rows) {
|
|
66
|
+
return {
|
|
67
|
+
result: { ...seed.rows, coverage },
|
|
68
|
+
keys: seed.rows.groups.map((_group, index) => index),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
result: { ...seed.rows, coverage },
|
|
73
|
+
keys: seed.rows.documents.map((document) => documentKey(document.room, document.path)),
|
|
74
|
+
};
|
|
75
|
+
}
|
package/dist/shared.d.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
export type Paths<V> = Readonly<Record<string, V>>;
|
|
2
2
|
type Weigh<V> = (key: string, value: V) => number;
|
|
3
|
+
export declare function sharing<V>(map: Paths<V>): Generator<number, Paths<V>, void>;
|
|
3
4
|
export declare function shared<V>(map: Paths<V>): Paths<V>;
|
|
4
5
|
export declare function patched<V>(base: Paths<V>, set: Iterable<readonly [string, V]>, removed?: Iterable<string>): Paths<V>;
|
|
6
|
+
export declare function patching<V>(base: Paths<V>, set: Iterable<readonly [string, V]>, removed?: Iterable<string>): Generator<number, Paths<V>, void>;
|
|
5
7
|
export declare function tally<V>(map: Paths<V>, weigh: Weigh<V>): number;
|
|
6
8
|
export declare function sizeOf<V>(map: Paths<V>): number;
|
|
9
|
+
export declare function differences<V>(left: Paths<V>, right: Paths<V>, same?: (left: V, right: V) => boolean): Generator<number, ReadonlySet<string>, void>;
|
|
7
10
|
export declare function differing<V>(left: Paths<V>, right: Paths<V>, same?: (left: V, right: V) => boolean): ReadonlySet<string>;
|
|
8
11
|
export declare function drafted<V>(base: Paths<V>): Record<string, V>;
|
|
9
12
|
export declare function settled<V>(draft: Record<string, V>): Paths<V>;
|
|
13
|
+
export declare function settling<V>(draft: Record<string, V>): Generator<number, Paths<V>, void>;
|
|
10
14
|
export {};
|
|
11
15
|
//# sourceMappingURL=shared.d.ts.map
|
package/dist/shared.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAkBnD,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;AA8LlD,wBAAiB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAE5E;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAEjD;AAED,wBAAgB,OAAO,CAAC,CAAC,EACvB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EACd,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EACnC,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAM,GAC7B,KAAK,CAAC,CAAC,CAAC,CAEV;AAED,wBAAiB,QAAQ,CAAC,CAAC,EACzB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EACd,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EACnC,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAM,GAC7B,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAgCnC;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAY/D;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAE/C;AA8CD,wBAAiB,WAAW,CAAC,CAAC,EAC5B,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EACd,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,IAAI,GAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAmB,GAC/C,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAkB9C;AAED,wBAAgB,SAAS,CAAC,CAAC,EACzB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EACd,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,IAAI,GAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAmB,GAC/C,WAAW,CAAC,MAAM,CAAC,CAErB;AAMD,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAiD5D;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAE7D;AAED,wBAAiB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAUxF"}
|
package/dist/shared.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { finished, ROW_WEIGHT } from './turn.js';
|
|
1
2
|
const BITS = 5;
|
|
2
3
|
const MASK = (1 << BITS) - 1;
|
|
3
4
|
const roots = new WeakMap();
|
|
@@ -179,7 +180,7 @@ function facade(root) {
|
|
|
179
180
|
roots.set(map, root);
|
|
180
181
|
return map;
|
|
181
182
|
}
|
|
182
|
-
function
|
|
183
|
+
function* rooted(map) {
|
|
183
184
|
const held = roots.get(map);
|
|
184
185
|
if (held !== undefined)
|
|
185
186
|
return held;
|
|
@@ -188,14 +189,21 @@ function rootOf(map) {
|
|
|
188
189
|
for (const [key, value] of Object.entries(map)) {
|
|
189
190
|
node = put(node, { key, hash: hashOf(key), value }, 0);
|
|
190
191
|
size += 1;
|
|
192
|
+
yield ROW_WEIGHT;
|
|
191
193
|
}
|
|
192
194
|
return { node, size };
|
|
193
195
|
}
|
|
196
|
+
export function* sharing(map) {
|
|
197
|
+
return roots.has(map) ? map : facade(yield* rooted(map));
|
|
198
|
+
}
|
|
194
199
|
export function shared(map) {
|
|
195
|
-
return
|
|
200
|
+
return finished(sharing(map));
|
|
196
201
|
}
|
|
197
202
|
export function patched(base, set, removed = []) {
|
|
198
|
-
|
|
203
|
+
return finished(patching(base, set, removed));
|
|
204
|
+
}
|
|
205
|
+
export function* patching(base, set, removed = []) {
|
|
206
|
+
const root = yield* rooted(base);
|
|
199
207
|
const weighed = [...(tallies.get(base) ?? [])];
|
|
200
208
|
let node = root.node;
|
|
201
209
|
let size = root.size;
|
|
@@ -215,6 +223,7 @@ export function patched(base, set, removed = []) {
|
|
|
215
223
|
node = taken(node, before.hash, key, 0);
|
|
216
224
|
size -= 1;
|
|
217
225
|
shift(key, before, undefined);
|
|
226
|
+
yield ROW_WEIGHT;
|
|
218
227
|
}
|
|
219
228
|
for (const [key, value] of set) {
|
|
220
229
|
const before = lookup({ node, size }, key);
|
|
@@ -222,6 +231,7 @@ export function patched(base, set, removed = []) {
|
|
|
222
231
|
if (before === undefined)
|
|
223
232
|
size += 1;
|
|
224
233
|
shift(key, before, value);
|
|
234
|
+
yield ROW_WEIGHT;
|
|
225
235
|
}
|
|
226
236
|
if (node === root.node && roots.has(base))
|
|
227
237
|
return base;
|
|
@@ -248,54 +258,70 @@ export function tally(map, weigh) {
|
|
|
248
258
|
export function sizeOf(map) {
|
|
249
259
|
return roots.get(map)?.size ?? Object.keys(map).length;
|
|
250
260
|
}
|
|
251
|
-
function
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
261
|
+
function* compared(left, right, same, into) {
|
|
262
|
+
const pending = [[left, right]];
|
|
263
|
+
for (let pair = pending.pop(); pair !== undefined; pair = pending.pop()) {
|
|
264
|
+
const [one, other] = pair;
|
|
265
|
+
if (one === other)
|
|
266
|
+
continue;
|
|
267
|
+
if (one !== undefined &&
|
|
268
|
+
other !== undefined &&
|
|
269
|
+
!isLeaf(one) &&
|
|
270
|
+
!isCollision(one) &&
|
|
271
|
+
!isLeaf(other) &&
|
|
272
|
+
!isCollision(other)) {
|
|
273
|
+
const children = [];
|
|
274
|
+
for (let remaining = one.bitmap | other.bitmap; remaining !== 0; remaining &= remaining - 1) {
|
|
275
|
+
const bit = remaining & -remaining;
|
|
276
|
+
children.push([
|
|
277
|
+
(one.bitmap & bit) === 0 ? undefined : one.children[slot(one.bitmap, bit)],
|
|
278
|
+
(other.bitmap & bit) === 0 ? undefined : other.children[slot(other.bitmap, bit)],
|
|
279
|
+
]);
|
|
280
|
+
}
|
|
281
|
+
pending.push(...children.reverse());
|
|
282
|
+
continue;
|
|
267
283
|
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
284
|
+
const before = new Map();
|
|
285
|
+
for (const leaf of leavesOf(one)) {
|
|
286
|
+
before.set(leaf.key, leaf.value);
|
|
287
|
+
yield ROW_WEIGHT;
|
|
288
|
+
}
|
|
289
|
+
for (const leaf of leavesOf(other)) {
|
|
290
|
+
const held = before.get(leaf.key);
|
|
291
|
+
before.delete(leaf.key);
|
|
292
|
+
if (held === undefined || !same(held, leaf.value))
|
|
293
|
+
into.add(leaf.key);
|
|
294
|
+
yield ROW_WEIGHT;
|
|
295
|
+
}
|
|
296
|
+
for (const key of before.keys())
|
|
297
|
+
into.add(key);
|
|
276
298
|
}
|
|
277
|
-
for (const key of before.keys())
|
|
278
|
-
into.add(key);
|
|
279
299
|
}
|
|
280
|
-
export function
|
|
300
|
+
export function* differences(left, right, same = Object.is) {
|
|
281
301
|
const into = new Set();
|
|
282
302
|
if (left === right)
|
|
283
303
|
return into;
|
|
284
304
|
const leftRoot = roots.get(left);
|
|
285
305
|
const rightRoot = roots.get(right);
|
|
286
306
|
if (leftRoot !== undefined && rightRoot !== undefined) {
|
|
287
|
-
compared(leftRoot.node, rightRoot.node,
|
|
307
|
+
yield* compared(leftRoot.node, rightRoot.node, same, into);
|
|
288
308
|
return into;
|
|
289
309
|
}
|
|
290
310
|
for (const key of Object.keys(left)) {
|
|
291
311
|
if (!Object.hasOwn(right, key) || !same(left[key], right[key]))
|
|
292
312
|
into.add(key);
|
|
313
|
+
yield ROW_WEIGHT;
|
|
293
314
|
}
|
|
294
|
-
for (const key of Object.keys(right))
|
|
315
|
+
for (const key of Object.keys(right)) {
|
|
295
316
|
if (!Object.hasOwn(left, key))
|
|
296
317
|
into.add(key);
|
|
318
|
+
yield ROW_WEIGHT;
|
|
319
|
+
}
|
|
297
320
|
return into;
|
|
298
321
|
}
|
|
322
|
+
export function differing(left, right, same = Object.is) {
|
|
323
|
+
return finished(differences(left, right, same));
|
|
324
|
+
}
|
|
299
325
|
const drafts = new WeakMap();
|
|
300
326
|
const GONE = Symbol('gone');
|
|
301
327
|
export function drafted(base) {
|
|
@@ -355,6 +381,9 @@ export function drafted(base) {
|
|
|
355
381
|
return draft;
|
|
356
382
|
}
|
|
357
383
|
export function settled(draft) {
|
|
384
|
+
return finished(settling(draft));
|
|
385
|
+
}
|
|
386
|
+
export function* settling(draft) {
|
|
358
387
|
const held = drafts.get(draft);
|
|
359
388
|
const set = [];
|
|
360
389
|
const removed = [];
|
|
@@ -363,6 +392,7 @@ export function settled(draft) {
|
|
|
363
392
|
removed.push(key);
|
|
364
393
|
else
|
|
365
394
|
set.push([key, value]);
|
|
395
|
+
yield ROW_WEIGHT;
|
|
366
396
|
}
|
|
367
|
-
return
|
|
397
|
+
return yield* patching(held.base, set, removed);
|
|
368
398
|
}
|
package/dist/store.d.ts
CHANGED
|
@@ -3,11 +3,12 @@ import type { Capability, HeadChange, Member, OperationScopes, ProviderLimit, Re
|
|
|
3
3
|
import type { AcceptedMessage, KeptReceipt } from './adapter.js';
|
|
4
4
|
import type { ChangeBatch } from './change.js';
|
|
5
5
|
import { type HeldBinary } from './overlay.js';
|
|
6
|
+
import { type Later } from './turn.js';
|
|
6
7
|
import type { ChatDraftFile } from './file.js';
|
|
7
8
|
import type { Submission } from './outcome.js';
|
|
8
9
|
import type { RoomDraftRecord, SavedDraft } from './room-draft.js';
|
|
9
10
|
export declare const STORE_SCHEMA = 25;
|
|
10
|
-
export declare const AUTHORED_SCHEMA =
|
|
11
|
+
export declare const AUTHORED_SCHEMA = 3;
|
|
11
12
|
export type ReplicaRecord = {
|
|
12
13
|
locator: string;
|
|
13
14
|
name: string;
|
|
@@ -23,10 +24,11 @@ export type ReplicaRecord = {
|
|
|
23
24
|
documents: Readonly<Record<string, string>>;
|
|
24
25
|
binaries: Readonly<Record<string, HeldBinary>>;
|
|
25
26
|
revisions: Readonly<Record<string, string>>;
|
|
27
|
+
fileIds: Readonly<Record<string, string>>;
|
|
26
28
|
changes: Readonly<Record<string, HeadChange>>;
|
|
27
29
|
written: Readonly<Record<string, string>>;
|
|
28
30
|
};
|
|
29
|
-
export type StagedLayer = Pick<ReplicaRecord, 'documents' | 'binaries' | 'revisions' | 'changes' | 'written'>;
|
|
31
|
+
export type StagedLayer = Pick<ReplicaRecord, 'documents' | 'binaries' | 'revisions' | 'fileIds' | 'changes' | 'written'>;
|
|
30
32
|
export type TransferRecord = {
|
|
31
33
|
locator: string;
|
|
32
34
|
transfer: string;
|
|
@@ -48,7 +50,6 @@ export type PendingState = {
|
|
|
48
50
|
};
|
|
49
51
|
export type TargetRecord = {
|
|
50
52
|
established: boolean;
|
|
51
|
-
search: boolean;
|
|
52
53
|
};
|
|
53
54
|
export type QueueRecord = {
|
|
54
55
|
locator: string;
|
|
@@ -66,6 +67,10 @@ export type HeldConversation = {
|
|
|
66
67
|
read: string | null | undefined;
|
|
67
68
|
partial: boolean;
|
|
68
69
|
};
|
|
70
|
+
export type MessageWindow = {
|
|
71
|
+
messages: AcceptedMessage[];
|
|
72
|
+
more: boolean;
|
|
73
|
+
};
|
|
69
74
|
export type ConversationWrite = {
|
|
70
75
|
conversation: string;
|
|
71
76
|
messages: readonly AcceptedMessage[];
|
|
@@ -88,6 +93,11 @@ export type ChatDraftRecord = {
|
|
|
88
93
|
submitted?: readonly ChatSubmission[];
|
|
89
94
|
moves?: readonly string[];
|
|
90
95
|
};
|
|
96
|
+
export type CallRecord = {
|
|
97
|
+
readonly operation: string;
|
|
98
|
+
readonly name: string;
|
|
99
|
+
readonly input: unknown;
|
|
100
|
+
};
|
|
91
101
|
export type RecordWrite = {
|
|
92
102
|
next: ReplicaRecord;
|
|
93
103
|
previous: ReplicaRecord | null;
|
|
@@ -96,6 +106,7 @@ export type RecordWrite = {
|
|
|
96
106
|
export type AuthoredWrite = {
|
|
97
107
|
locator: string;
|
|
98
108
|
queue: readonly ChangeBatch[];
|
|
109
|
+
founded?: readonly ChangeBatch[];
|
|
99
110
|
saved?: ReadonlyMap<string, readonly SavedDraft[]>;
|
|
100
111
|
roomDrafts?: readonly RoomDraftRecord[];
|
|
101
112
|
consumedRoomDrafts?: readonly string[];
|
|
@@ -123,7 +134,8 @@ export type RuntimeStore = {
|
|
|
123
134
|
present(record: PresentationRecord): Promise<void>;
|
|
124
135
|
conversations(): Promise<readonly HeldConversation[]>;
|
|
125
136
|
keepMessages(write: ConversationWrite): Promise<void>;
|
|
126
|
-
messageWindow(conversation: string, limit: number |
|
|
137
|
+
messageWindow(conversation: string, limit: number, before: readonly [string, string] | null): Promise<MessageWindow>;
|
|
138
|
+
messageCount(conversation: string): Promise<number>;
|
|
127
139
|
messagesAfter(conversation: string, identity: string | null): Promise<AcceptedMessage[]>;
|
|
128
140
|
messageIdentities(conversation: string): Promise<readonly string[]>;
|
|
129
141
|
turnArrived(conversation: string, turn: string): Promise<boolean>;
|
|
@@ -131,6 +143,9 @@ export type RuntimeStore = {
|
|
|
131
143
|
chatDrafts(): Promise<readonly ChatDraftRecord[]>;
|
|
132
144
|
keepChatDrafts(records: readonly ChatDraftRecord[]): Promise<void>;
|
|
133
145
|
dropChatDraft(conversation: string): Promise<void>;
|
|
146
|
+
calls(): Promise<readonly CallRecord[]>;
|
|
147
|
+
keepCall(record: CallRecord): Promise<void>;
|
|
148
|
+
dropCall(operation: string): Promise<void>;
|
|
134
149
|
keepRoomDraft(record: RoomDraftRecord): Promise<void>;
|
|
135
150
|
discardRoomDraft(locator: string, path: string): Promise<void>;
|
|
136
151
|
fences(): Promise<readonly string[]>;
|
|
@@ -151,6 +166,7 @@ export type RuntimeStore = {
|
|
|
151
166
|
rememberGeneration(value: string): Promise<void>;
|
|
152
167
|
close(): void;
|
|
153
168
|
};
|
|
169
|
+
export declare function transacted<T>(database: IDBDatabase, stores: string | readonly string[], mode: IDBTransactionMode, work: (transaction: IDBTransaction) => Later<T>): Promise<T>;
|
|
154
170
|
export declare function authoredHolder(): Promise<string | null>;
|
|
155
171
|
export declare function authoredBy(holder: string): Promise<boolean>;
|
|
156
172
|
export declare function authoredBinding(): Promise<string | null>;
|
package/dist/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,MAAM,EACN,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,cAAc,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAEvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,MAAM,EACN,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,cAAc,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAEvE,OAAO,EAAgC,KAAK,KAAK,EAAE,MAAM,WAAW,CAAC;AAErE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA2BnE,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B,eAAO,MAAM,eAAe,IAAI,CAAC;AA6BjC,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,cAAc,EAAE,UAAU,CAAC;IAC3B,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,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;IAC/C,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,aAAa,EACb,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAC3E,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE;QAAE,UAAU,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,UAAU,CAAA;KAAE,CAAC;CAC3D,CAAC;AAiCF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAcF,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,SAAS;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,YAAY,CAAA;KAAE,EAAE,CAAC;CACjE,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAUF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IACrC,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACtC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC;IACnD,UAAU,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACxC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,IAAI,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CAAC;IACzC,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,YAAY,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,cAAc,IAAI,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CAAC;IACpD,YAAY,IAAI,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,EAAE,YAAY,EAAE,SAAS,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9F,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3D,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,MAAM,IAAI,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IAC1C,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1F,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,UAAU,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAAC;IAClD,YAAY,IAAI,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,aAAa,IAAI,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAAC;IACtD,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,aAAa,CACX,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GACvC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACzF,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IACpE,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,iBAAiB,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,UAAU,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAAC;IAClD,cAAc,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,KAAK,IAAI,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,IAAI,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IACrC,KAAK,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,SAAS,IAAI,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC,CAAC;IAChD,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACrD,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,aAAa,IAAI,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IACjD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;IACvE,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClG,YAAY,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACrC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAeF,wBAAgB,UAAU,CAAC,CAAC,EAC1B,QAAQ,EAAE,WAAW,EACrB,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAClC,IAAI,EAAE,kBAAkB,EACxB,IAAI,EAAE,CAAC,WAAW,EAAE,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,GAC9C,OAAO,CAAC,CAAC,CAAC,CAwCZ;AA0OD,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAU7D;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAgBjE;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAU9D;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASjE;AAED,wBAAsB,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAK1E;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,GAC/D,OAAO,CAAC,WAAW,CAAC,CAetB;AA4BD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GACnC,OAAO,CAAC,YAAY,CAAC,CAyfvB"}
|