@agentshouse/mdruntime 0.1.0-alpha.9 → 0.1.0-c0105dbd22806
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 +299 -0
- package/README.md +54 -0
- package/dist/adapter.d.ts +246 -40
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +1 -10
- package/dist/attached-model.d.ts +11 -0
- package/dist/attached-model.d.ts.map +1 -0
- package/dist/attached-model.js +47 -0
- package/dist/attempt.d.ts +16 -0
- package/dist/attempt.d.ts.map +1 -0
- package/dist/attempt.js +70 -0
- package/dist/binary.d.ts +23 -0
- package/dist/binary.d.ts.map +1 -0
- package/dist/binary.js +8 -0
- package/dist/bootstrap.d.ts +17 -7
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +97 -41
- package/dist/change-set.d.ts +33 -0
- package/dist/change-set.d.ts.map +1 -0
- package/dist/change-set.js +90 -0
- package/dist/change.d.ts +24 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +31 -5
- package/dist/chat/acts.d.ts +34 -0
- package/dist/chat/acts.d.ts.map +1 -0
- package/dist/chat/acts.js +36 -0
- package/dist/chat/context.d.ts +3 -0
- package/dist/chat/context.d.ts.map +1 -0
- package/dist/chat/context.js +10 -0
- package/dist/chat/input.d.ts +9 -0
- package/dist/chat/input.d.ts.map +1 -0
- package/dist/chat/input.js +99 -0
- package/dist/chat/kit.d.ts +60 -0
- package/dist/chat/kit.d.ts.map +1 -0
- package/dist/chat/kit.js +123 -0
- package/dist/chat/lasting.d.ts +6 -0
- package/dist/chat/lasting.d.ts.map +1 -0
- package/dist/chat/lasting.js +19 -0
- package/dist/chat/list.d.ts +26 -0
- package/dist/chat/list.d.ts.map +1 -0
- package/dist/chat/list.js +62 -0
- package/dist/chat/markdown.d.ts +20 -0
- package/dist/chat/markdown.d.ts.map +1 -0
- package/dist/chat/markdown.js +188 -0
- package/dist/chat/message.d.ts +6 -0
- package/dist/chat/message.d.ts.map +1 -0
- package/dist/chat/message.js +192 -0
- package/dist/chat/messages.d.ts +21 -0
- package/dist/chat/messages.d.ts.map +1 -0
- package/dist/chat/messages.js +151 -0
- package/dist/chat/name.d.ts +6 -0
- package/dist/chat/name.d.ts.map +1 -0
- package/dist/chat/name.js +37 -0
- package/dist/chat/opened.d.ts +11 -0
- package/dist/chat/opened.d.ts.map +1 -0
- package/dist/chat/opened.js +17 -0
- package/dist/chat/overlay.d.ts +31 -0
- package/dist/chat/overlay.d.ts.map +1 -0
- package/dist/chat/overlay.js +97 -0
- package/dist/chat/parts.d.ts +57 -0
- package/dist/chat/parts.d.ts.map +1 -0
- package/dist/chat/parts.js +119 -0
- package/dist/chat/process.d.ts +20 -0
- package/dist/chat/process.d.ts.map +1 -0
- package/dist/chat/process.js +32 -0
- package/dist/chat/provider.d.ts +63 -0
- package/dist/chat/provider.d.ts.map +1 -0
- package/dist/chat/provider.js +645 -0
- package/dist/chat/question.d.ts +9 -0
- package/dist/chat/question.d.ts.map +1 -0
- package/dist/chat/question.js +80 -0
- package/dist/chat/questions.d.ts +31 -0
- package/dist/chat/questions.d.ts.map +1 -0
- package/dist/chat/questions.js +111 -0
- package/dist/chat/read.d.ts +5 -0
- package/dist/chat/read.d.ts.map +1 -0
- package/dist/chat/read.js +13 -0
- package/dist/chat/ready.d.ts +33 -0
- package/dist/chat/ready.d.ts.map +1 -0
- package/dist/chat/ready.js +91 -0
- package/dist/chat/style.d.ts +4 -0
- package/dist/chat/style.d.ts.map +1 -0
- package/dist/chat/style.js +302 -0
- package/dist/chat.d.ts +14 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +8 -0
- package/dist/client.d.ts +49 -33
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +164 -183
- package/dist/collection.d.ts +9 -17
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +83 -89
- package/dist/connection.d.ts +66 -48
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +1964 -1173
- package/dist/conversation.d.ts +65 -24
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +675 -334
- package/dist/durability.js +6 -6
- package/dist/entry.d.ts +17 -0
- package/dist/entry.d.ts.map +1 -0
- package/dist/entry.js +156 -0
- package/dist/expectation.d.ts +21 -0
- package/dist/expectation.d.ts.map +1 -0
- package/dist/expectation.js +70 -0
- package/dist/failure.d.ts +13 -0
- package/dist/failure.d.ts.map +1 -0
- package/dist/failure.js +19 -0
- package/dist/fence.d.ts +6 -0
- package/dist/fence.d.ts.map +1 -0
- package/dist/fence.js +10 -0
- package/dist/file.d.ts +2 -2
- package/dist/file.d.ts.map +1 -1
- package/dist/file.js +48 -71
- package/dist/host.d.ts +15 -3
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +109 -127
- package/dist/identity.d.ts +4 -0
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +22 -9
- package/dist/index.d.ts +17 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/log.js +5 -6
- package/dist/memory.d.ts +19 -8
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +304 -216
- package/dist/model.d.ts +16 -30
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +21 -21
- package/dist/observation.d.ts +27 -0
- package/dist/observation.d.ts.map +1 -0
- package/dist/observation.js +95 -0
- package/dist/open.d.ts +2 -0
- package/dist/open.d.ts.map +1 -0
- package/dist/open.js +1 -0
- package/dist/outcome.d.ts +37 -31
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +36 -18
- package/dist/overlay.d.ts +22 -4
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +236 -54
- package/dist/paths.d.ts +0 -2
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +6 -29
- package/dist/query.d.ts +219 -10
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +462 -15
- package/dist/reach.d.ts +42 -0
- package/dist/reach.d.ts.map +1 -0
- package/dist/reach.js +294 -0
- package/dist/react.d.ts +41 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +64 -0
- package/dist/read-side.d.ts +18 -0
- package/dist/read-side.d.ts.map +1 -0
- package/dist/read-side.js +440 -0
- package/dist/refresh.d.ts +15 -5
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +64 -41
- package/dist/replica.d.ts +28 -5
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +249 -40
- package/dist/room-draft.d.ts +144 -0
- package/dist/room-draft.d.ts.map +1 -0
- package/dist/room-draft.js +438 -0
- package/dist/rows.d.ts +46 -0
- package/dist/rows.d.ts.map +1 -0
- package/dist/rows.js +145 -0
- package/dist/save.d.ts +33 -5
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +630 -366
- package/dist/search.d.ts +62 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +125 -0
- package/dist/status.d.ts +6 -8
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +8 -20
- package/dist/store.d.ts +89 -34
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +513 -132
- package/dist/transfer.d.ts +5 -0
- package/dist/transfer.d.ts.map +1 -1
- package/dist/transfer.js +1 -5
- package/dist/wire.d.ts +59 -19
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +88 -105
- package/package.json +34 -16
- package/dist/adapter.js.map +0 -1
- package/dist/bootstrap.js.map +0 -1
- package/dist/change.js.map +0 -1
- package/dist/client.js.map +0 -1
- package/dist/collection.js.map +0 -1
- package/dist/connection.js.map +0 -1
- package/dist/conversation.js.map +0 -1
- package/dist/durability.js.map +0 -1
- package/dist/file.js.map +0 -1
- package/dist/host.js.map +0 -1
- package/dist/identity.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/log.js.map +0 -1
- package/dist/memory.js.map +0 -1
- package/dist/model.js.map +0 -1
- package/dist/outcome.js.map +0 -1
- package/dist/overlay.js.map +0 -1
- package/dist/paths.js.map +0 -1
- package/dist/query.js.map +0 -1
- package/dist/refresh.js.map +0 -1
- package/dist/replica.js.map +0 -1
- package/dist/save.js.map +0 -1
- package/dist/status.js.map +0 -1
- package/dist/store.js.map +0 -1
- package/dist/transfer.js.map +0 -1
- package/dist/wire.js.map +0 -1
package/dist/overlay.js
CHANGED
|
@@ -1,4 +1,26 @@
|
|
|
1
1
|
import { apply, parse, serialize } from '@agentshouse/mdmodel';
|
|
2
|
+
export function acceptedBinaries(files) {
|
|
3
|
+
return Object.fromEntries(Object.entries(files).map(([path, file]) => [path, { state: 'accepted', ...file }]));
|
|
4
|
+
}
|
|
5
|
+
export function sameBinary(left, right) {
|
|
6
|
+
if (left === undefined || right === undefined)
|
|
7
|
+
return left === right;
|
|
8
|
+
return (left.state === right.state &&
|
|
9
|
+
left.byteLength === right.byteLength &&
|
|
10
|
+
left.mediaType === right.mediaType &&
|
|
11
|
+
left.sha256 === right.sha256 &&
|
|
12
|
+
(left.state === 'accepted'
|
|
13
|
+
? right.state === 'accepted' && left.fileRef === right.fileRef
|
|
14
|
+
: right.state === 'pending' && left.localId === right.localId));
|
|
15
|
+
}
|
|
16
|
+
export function sameChange(left, right) {
|
|
17
|
+
if (left === undefined || right === undefined)
|
|
18
|
+
return left === right;
|
|
19
|
+
return (left.time === right.time &&
|
|
20
|
+
left.author?.kind === right.author?.kind &&
|
|
21
|
+
left.author?.id === right.author?.id &&
|
|
22
|
+
left.author?.name === right.author?.name);
|
|
23
|
+
}
|
|
2
24
|
const EMPTY_FRONTMATTER = '---\n---\n';
|
|
3
25
|
function at(path, name) {
|
|
4
26
|
return `${path} ${name}`;
|
|
@@ -7,7 +29,7 @@ function priorsOf(preconditions) {
|
|
|
7
29
|
const fields = new Map();
|
|
8
30
|
const sections = new Map();
|
|
9
31
|
const preambles = new Map();
|
|
10
|
-
for (const precondition of preconditions){
|
|
32
|
+
for (const precondition of preconditions) {
|
|
11
33
|
if (precondition.kind === 'field') {
|
|
12
34
|
fields.set(at(precondition.path, precondition.name), precondition.value);
|
|
13
35
|
}
|
|
@@ -19,25 +41,24 @@ function priorsOf(preconditions) {
|
|
|
19
41
|
}
|
|
20
42
|
}
|
|
21
43
|
return {
|
|
22
|
-
field: (path, name)=>fields.get(at(path, name)),
|
|
23
|
-
section: (path, name)=>sections.get(at(path, name)) ?? '',
|
|
24
|
-
preamble: (path)=>preambles.get(path) ?? ''
|
|
44
|
+
field: (path, name) => fields.get(at(path, name)),
|
|
45
|
+
section: (path, name) => sections.get(at(path, name)) ?? '',
|
|
46
|
+
preamble: (path) => preambles.get(path) ?? '',
|
|
25
47
|
};
|
|
26
48
|
}
|
|
27
49
|
function compose(fields, sections) {
|
|
28
|
-
const body = Object.entries(sections)
|
|
50
|
+
const body = Object.entries(sections)
|
|
51
|
+
.map(([name, value]) => `\n## ${name}\n${value}`)
|
|
52
|
+
.join('');
|
|
29
53
|
const skeleton = `${EMPTY_FRONTMATTER}${body}`;
|
|
30
54
|
const opened = parse(skeleton);
|
|
31
|
-
if (!opened.ok)
|
|
55
|
+
if (!opened.ok)
|
|
56
|
+
return skeleton;
|
|
32
57
|
let document = opened.document;
|
|
33
|
-
for (const [name, value] of Object.entries(fields)){
|
|
34
|
-
const next = apply(document, {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
value,
|
|
38
|
-
prior: undefined
|
|
39
|
-
});
|
|
40
|
-
if (next.outcome === 'applied') document = next.document;
|
|
58
|
+
for (const [name, value] of Object.entries(fields)) {
|
|
59
|
+
const next = apply(document, { kind: 'field', name, value, prior: undefined });
|
|
60
|
+
if (next.outcome === 'applied')
|
|
61
|
+
document = next.document;
|
|
41
62
|
}
|
|
42
63
|
return serialize(document);
|
|
43
64
|
}
|
|
@@ -47,93 +68,254 @@ function edited(document, change, priors) {
|
|
|
47
68
|
kind: 'field',
|
|
48
69
|
name: change.name,
|
|
49
70
|
value: change.value,
|
|
50
|
-
prior: priors.field(change.path, change.name)
|
|
71
|
+
prior: priors.field(change.path, change.name),
|
|
51
72
|
});
|
|
52
73
|
}
|
|
53
74
|
if (change.kind === 'preamble') {
|
|
54
75
|
return apply(document, {
|
|
55
76
|
kind: 'preamble',
|
|
56
77
|
value: change.value,
|
|
57
|
-
prior: priors.preamble(change.path)
|
|
78
|
+
prior: priors.preamble(change.path),
|
|
58
79
|
});
|
|
59
80
|
}
|
|
60
|
-
if (change.kind !== 'section')
|
|
81
|
+
if (change.kind !== 'section')
|
|
82
|
+
return null;
|
|
61
83
|
return apply(document, {
|
|
62
84
|
kind: 'section',
|
|
63
85
|
name: change.name,
|
|
64
86
|
value: change.value,
|
|
65
|
-
prior: priors.section(change.path, change.name)
|
|
87
|
+
prior: priors.section(change.path, change.name),
|
|
66
88
|
});
|
|
67
89
|
}
|
|
68
90
|
function edit(staged, change, priors) {
|
|
69
91
|
const text = staged.documents[change.path];
|
|
70
|
-
if (text === undefined)
|
|
92
|
+
if (text === undefined)
|
|
93
|
+
return false;
|
|
71
94
|
const parsed = parse(text, change.path);
|
|
72
|
-
if (!parsed.ok)
|
|
95
|
+
if (!parsed.ok)
|
|
96
|
+
return false;
|
|
73
97
|
const next = edited(parsed.document, change, priors);
|
|
74
|
-
if (next?.outcome
|
|
98
|
+
if (next?.outcome !== 'applied')
|
|
99
|
+
return false;
|
|
100
|
+
staged.documents[change.path] = serialize(next.document);
|
|
101
|
+
return true;
|
|
75
102
|
}
|
|
76
103
|
function relocate(staged, from, to) {
|
|
77
104
|
const text = staged.documents[from];
|
|
78
105
|
if (text !== undefined) {
|
|
79
106
|
delete staged.documents[from];
|
|
80
107
|
staged.documents[to] = text;
|
|
81
|
-
} else if (staged.binaryTargets.delete(from)) {
|
|
82
|
-
staged.binaryTargets.add(to);
|
|
83
|
-
} else {
|
|
84
|
-
return;
|
|
85
108
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
109
|
+
else if (staged.binaries[from] !== undefined) {
|
|
110
|
+
staged.binaries[to] = staged.binaries[from];
|
|
111
|
+
delete staged.binaries[from];
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
moveHead(staged, from, to);
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
function moveHead(heads, from, to) {
|
|
120
|
+
const revision = heads.revisions[from];
|
|
121
|
+
const change = heads.changes[from];
|
|
122
|
+
delete heads.revisions[from];
|
|
123
|
+
delete heads.changes[from];
|
|
124
|
+
delete heads.changes[to];
|
|
125
|
+
if (revision !== undefined)
|
|
126
|
+
heads.revisions[to] = revision;
|
|
127
|
+
if (change !== undefined)
|
|
128
|
+
heads.changes[to] = change;
|
|
90
129
|
}
|
|
91
130
|
function erase(staged, path) {
|
|
92
131
|
delete staged.documents[path];
|
|
93
132
|
delete staged.revisions[path];
|
|
94
|
-
staged.
|
|
133
|
+
delete staged.changes[path];
|
|
134
|
+
delete staged.binaries[path];
|
|
95
135
|
}
|
|
96
136
|
function stage(staged, change, priors) {
|
|
97
137
|
if (change.kind === 'field' || change.kind === 'section' || change.kind === 'preamble') {
|
|
98
|
-
edit(staged, change, priors);
|
|
99
|
-
return;
|
|
138
|
+
return edit(staged, change, priors);
|
|
100
139
|
}
|
|
101
140
|
if (change.kind === 'create') {
|
|
102
|
-
staged.documents[change.path] =
|
|
103
|
-
|
|
141
|
+
staged.documents[change.path] =
|
|
142
|
+
'content' in change ? change.content : compose(change.fields, change.sections);
|
|
143
|
+
delete staged.changes[change.path];
|
|
144
|
+
return true;
|
|
104
145
|
}
|
|
105
146
|
if (change.kind === 'replace') {
|
|
106
|
-
if (staged.documents[change.path] === undefined)
|
|
147
|
+
if (staged.documents[change.path] === undefined)
|
|
148
|
+
return false;
|
|
107
149
|
staged.documents[change.path] = change.content;
|
|
108
|
-
return;
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
if (change.kind === 'binary') {
|
|
153
|
+
if (staged.documents[change.path] !== undefined)
|
|
154
|
+
return false;
|
|
155
|
+
staged.binaries[change.path] = {
|
|
156
|
+
state: 'pending',
|
|
157
|
+
localId: change.localId,
|
|
158
|
+
byteLength: change.byteLength,
|
|
159
|
+
mediaType: change.mediaType,
|
|
160
|
+
sha256: change.sha256,
|
|
161
|
+
};
|
|
162
|
+
delete staged.revisions[change.path];
|
|
163
|
+
delete staged.changes[change.path];
|
|
164
|
+
return true;
|
|
109
165
|
}
|
|
110
166
|
if (change.kind === 'move') {
|
|
111
|
-
relocate(staged, change.path, change.to);
|
|
112
|
-
return;
|
|
167
|
+
return relocate(staged, change.path, change.to);
|
|
113
168
|
}
|
|
114
169
|
erase(staged, change.path);
|
|
170
|
+
return true;
|
|
115
171
|
}
|
|
116
|
-
export function overlay(base, queue) {
|
|
172
|
+
export function overlay(base, queue, unapplied) {
|
|
117
173
|
const staged = {
|
|
118
|
-
documents: {
|
|
119
|
-
|
|
120
|
-
},
|
|
121
|
-
|
|
122
|
-
revisions: {
|
|
123
|
-
...base.revisions
|
|
124
|
-
}
|
|
174
|
+
documents: { ...base.documents },
|
|
175
|
+
binaries: { ...base.binaries },
|
|
176
|
+
revisions: { ...base.revisions },
|
|
177
|
+
changes: { ...base.changes },
|
|
125
178
|
};
|
|
126
|
-
for (const batch of queue){
|
|
179
|
+
for (const batch of queue) {
|
|
127
180
|
const priors = priorsOf(batch.preconditions);
|
|
128
|
-
for (const change of batch.changes)
|
|
181
|
+
for (const change of batch.changes) {
|
|
182
|
+
if (!stage(staged, change, priors))
|
|
183
|
+
unapplied?.();
|
|
184
|
+
}
|
|
129
185
|
}
|
|
130
186
|
return {
|
|
131
187
|
documents: staged.documents,
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
188
|
+
binaries: staged.binaries,
|
|
189
|
+
revisions: staged.revisions,
|
|
190
|
+
changes: staged.changes,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
function pathsOf(batch) {
|
|
194
|
+
return batch.changes.flatMap((change) => change.kind === 'move' ? [change.path, change.to] : [change.path]);
|
|
195
|
+
}
|
|
196
|
+
export function sameLayerText(left, right) {
|
|
197
|
+
const paths = Object.keys(left.documents);
|
|
198
|
+
return (paths.length === Object.keys(right.documents).length &&
|
|
199
|
+
paths.every((path) => left.documents[path] === right.documents[path]) &&
|
|
200
|
+
sameBinaries(left.binaries, right.binaries));
|
|
201
|
+
}
|
|
202
|
+
function sameBinaries(left, right) {
|
|
203
|
+
const paths = Object.keys(left);
|
|
204
|
+
return (paths.length === Object.keys(right).length &&
|
|
205
|
+
paths.every((path) => sameBinary(left[path], right[path])));
|
|
206
|
+
}
|
|
207
|
+
function replayHeads(base, queue) {
|
|
208
|
+
const heads = { revisions: { ...base.revisions }, changes: { ...base.changes } };
|
|
209
|
+
for (const batch of queue) {
|
|
210
|
+
for (const change of batch.changes) {
|
|
211
|
+
if (change.kind === 'remove') {
|
|
212
|
+
delete heads.revisions[change.path];
|
|
213
|
+
delete heads.changes[change.path];
|
|
214
|
+
}
|
|
215
|
+
else if (change.kind === 'create') {
|
|
216
|
+
delete heads.changes[change.path];
|
|
217
|
+
}
|
|
218
|
+
else if (change.kind === 'binary') {
|
|
219
|
+
delete heads.revisions[change.path];
|
|
220
|
+
delete heads.changes[change.path];
|
|
221
|
+
}
|
|
222
|
+
else if (change.kind === 'move') {
|
|
223
|
+
moveHead(heads, change.path, change.to);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return heads;
|
|
228
|
+
}
|
|
229
|
+
export function overlayChanged(base, queue, previousBase, previousQueue, previousVisible) {
|
|
230
|
+
const before = previousQueue.map((batch) => JSON.stringify(batch));
|
|
231
|
+
const after = queue.map((batch) => JSON.stringify(batch));
|
|
232
|
+
if (before.length === after.length &&
|
|
233
|
+
before.every((id, index) => id === after[index]) &&
|
|
234
|
+
sameLayerText(base, previousBase)) {
|
|
235
|
+
return {
|
|
236
|
+
documents: previousVisible.documents,
|
|
237
|
+
binaries: previousVisible.binaries,
|
|
238
|
+
...replayHeads(base, queue),
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
const affected = new Set();
|
|
242
|
+
const paths = new Set([
|
|
243
|
+
...Object.keys(base.documents),
|
|
244
|
+
...Object.keys(previousBase.documents),
|
|
245
|
+
...Object.keys(base.revisions),
|
|
246
|
+
...Object.keys(previousBase.revisions),
|
|
247
|
+
...Object.keys(base.changes),
|
|
248
|
+
...Object.keys(previousBase.changes),
|
|
249
|
+
...Object.keys(base.binaries),
|
|
250
|
+
...Object.keys(previousBase.binaries),
|
|
251
|
+
]);
|
|
252
|
+
for (const path of paths) {
|
|
253
|
+
if (base.documents[path] !== previousBase.documents[path] ||
|
|
254
|
+
base.revisions[path] !== previousBase.revisions[path] ||
|
|
255
|
+
!sameChange(base.changes[path], previousBase.changes[path]) ||
|
|
256
|
+
!sameBinary(base.binaries[path], previousBase.binaries[path]))
|
|
257
|
+
affected.add(path);
|
|
258
|
+
}
|
|
259
|
+
const oldIds = new Set(before);
|
|
260
|
+
const newIds = new Set(after);
|
|
261
|
+
for (const batch of previousQueue) {
|
|
262
|
+
if (!newIds.has(JSON.stringify(batch)))
|
|
263
|
+
for (const path of pathsOf(batch))
|
|
264
|
+
affected.add(path);
|
|
265
|
+
}
|
|
266
|
+
for (const batch of queue) {
|
|
267
|
+
if (!oldIds.has(JSON.stringify(batch)))
|
|
268
|
+
for (const path of pathsOf(batch))
|
|
269
|
+
affected.add(path);
|
|
270
|
+
}
|
|
271
|
+
let expanded = true;
|
|
272
|
+
while (expanded) {
|
|
273
|
+
expanded = false;
|
|
274
|
+
for (const batch of queue) {
|
|
275
|
+
const touched = pathsOf(batch);
|
|
276
|
+
if (!touched.some((path) => affected.has(path)))
|
|
277
|
+
continue;
|
|
278
|
+
for (const path of touched) {
|
|
279
|
+
if (affected.has(path))
|
|
280
|
+
continue;
|
|
281
|
+
affected.add(path);
|
|
282
|
+
expanded = true;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
const documents = {};
|
|
287
|
+
const revisions = {};
|
|
288
|
+
const changes = {};
|
|
289
|
+
const binaries = {};
|
|
290
|
+
for (const path of affected) {
|
|
291
|
+
if (base.documents[path] !== undefined)
|
|
292
|
+
documents[path] = base.documents[path];
|
|
293
|
+
if (base.revisions[path] !== undefined)
|
|
294
|
+
revisions[path] = base.revisions[path];
|
|
295
|
+
if (base.changes[path] !== undefined)
|
|
296
|
+
changes[path] = base.changes[path];
|
|
297
|
+
if (base.binaries[path] !== undefined)
|
|
298
|
+
binaries[path] = base.binaries[path];
|
|
299
|
+
}
|
|
300
|
+
const staged = overlay({ documents, revisions, changes, binaries }, queue.filter((batch) => pathsOf(batch).some((path) => affected.has(path))));
|
|
301
|
+
const mergedDocuments = { ...previousVisible.documents };
|
|
302
|
+
const mergedRevisions = { ...previousVisible.revisions };
|
|
303
|
+
const mergedChanges = { ...previousVisible.changes };
|
|
304
|
+
const mergedBinaries = { ...previousVisible.binaries };
|
|
305
|
+
for (const path of affected) {
|
|
306
|
+
delete mergedDocuments[path];
|
|
307
|
+
delete mergedRevisions[path];
|
|
308
|
+
delete mergedChanges[path];
|
|
309
|
+
delete mergedBinaries[path];
|
|
310
|
+
}
|
|
311
|
+
Object.assign(mergedDocuments, staged.documents);
|
|
312
|
+
Object.assign(mergedRevisions, staged.revisions);
|
|
313
|
+
Object.assign(mergedChanges, staged.changes);
|
|
314
|
+
Object.assign(mergedBinaries, staged.binaries);
|
|
315
|
+
return {
|
|
316
|
+
documents: mergedDocuments,
|
|
317
|
+
revisions: mergedRevisions,
|
|
318
|
+
changes: mergedChanges,
|
|
319
|
+
binaries: mergedBinaries,
|
|
136
320
|
};
|
|
137
321
|
}
|
|
138
|
-
|
|
139
|
-
//# sourceMappingURL=overlay.js.map
|
package/dist/paths.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
export declare function normalize(path: string): string | null;
|
|
2
|
-
export declare function resolve(from: string, reference: string): string | null;
|
|
3
|
-
export declare function relative(from: string, target: string): string;
|
|
4
2
|
export declare function beneath(prefix: string, path: string): boolean;
|
|
5
3
|
export declare function covered(prefixes: readonly string[], path: string): boolean;
|
|
6
4
|
//# sourceMappingURL=paths.d.ts.map
|
package/dist/paths.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYrD;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAK1E"}
|
package/dist/paths.js
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
function dirname(path) {
|
|
2
|
-
const index = path.lastIndexOf('/');
|
|
3
|
-
return index === -1 ? '' : path.slice(0, index);
|
|
4
|
-
}
|
|
5
1
|
export function normalize(path) {
|
|
6
2
|
const parts = [];
|
|
7
|
-
for (const part of path.split('/')){
|
|
8
|
-
if (part === '' || part === '.')
|
|
3
|
+
for (const part of path.split('/')) {
|
|
4
|
+
if (part === '' || part === '.')
|
|
5
|
+
continue;
|
|
9
6
|
if (part === '..') {
|
|
10
|
-
if (parts.length === 0)
|
|
7
|
+
if (parts.length === 0)
|
|
8
|
+
return null;
|
|
11
9
|
parts.pop();
|
|
12
10
|
continue;
|
|
13
11
|
}
|
|
@@ -15,33 +13,12 @@ export function normalize(path) {
|
|
|
15
13
|
}
|
|
16
14
|
return parts.join('/');
|
|
17
15
|
}
|
|
18
|
-
export function resolve(from, reference) {
|
|
19
|
-
const base = dirname(from);
|
|
20
|
-
return normalize(base === '' ? reference : `${base}/${reference}`);
|
|
21
|
-
}
|
|
22
|
-
export function relative(from, target) {
|
|
23
|
-
const base = dirname(from).split('/').filter((part)=>part !== '');
|
|
24
|
-
const parts = target.split('/');
|
|
25
|
-
let shared = 0;
|
|
26
|
-
while(shared < base.length && shared + 1 < parts.length && base[shared] === parts[shared]){
|
|
27
|
-
shared += 1;
|
|
28
|
-
}
|
|
29
|
-
const up = Array.from({
|
|
30
|
-
length: base.length - shared
|
|
31
|
-
}, ()=>'..');
|
|
32
|
-
return [
|
|
33
|
-
...up,
|
|
34
|
-
...parts.slice(shared)
|
|
35
|
-
].join('/');
|
|
36
|
-
}
|
|
37
16
|
export function beneath(prefix, path) {
|
|
38
17
|
return path === prefix || path.startsWith(`${prefix}/`);
|
|
39
18
|
}
|
|
40
19
|
export function covered(prefixes, path) {
|
|
41
|
-
return prefixes.some((prefix)=>{
|
|
20
|
+
return prefixes.some((prefix) => {
|
|
42
21
|
const normalized = normalize(prefix);
|
|
43
22
|
return normalized !== null && (normalized === '' || beneath(normalized, path));
|
|
44
23
|
});
|
|
45
24
|
}
|
|
46
|
-
|
|
47
|
-
//# sourceMappingURL=paths.js.map
|
package/dist/query.d.ts
CHANGED
|
@@ -1,13 +1,222 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
export type
|
|
1
|
+
import { type Definition } from '@agentshouse/mdmodel';
|
|
2
|
+
import type { HeadChange } from './adapter.js';
|
|
3
|
+
import type { BinaryFileRecord } from './binary.js';
|
|
4
|
+
export type Value = string | number | boolean | null;
|
|
5
|
+
export type Predicate = Value | {
|
|
6
|
+
$eq: Value;
|
|
7
|
+
} | {
|
|
8
|
+
$ne: Value;
|
|
9
|
+
} | {
|
|
10
|
+
$in: readonly Value[];
|
|
11
|
+
} | {
|
|
12
|
+
$nin: readonly Value[];
|
|
13
|
+
} | {
|
|
14
|
+
$gt?: Value;
|
|
15
|
+
$gte?: Value;
|
|
16
|
+
$lt?: Value;
|
|
17
|
+
$lte?: Value;
|
|
18
|
+
} | {
|
|
19
|
+
$all: readonly Value[];
|
|
20
|
+
} | {
|
|
21
|
+
$size: number;
|
|
22
|
+
} | {
|
|
23
|
+
$exists: boolean;
|
|
24
|
+
};
|
|
25
|
+
export type Where = {
|
|
26
|
+
$and?: readonly Where[];
|
|
27
|
+
$or?: readonly Where[];
|
|
28
|
+
[field: string]: Predicate | readonly Where[] | undefined;
|
|
29
|
+
};
|
|
30
|
+
export type Related = {
|
|
31
|
+
types?: readonly string[];
|
|
32
|
+
where?: Where;
|
|
33
|
+
pathPrefix?: string;
|
|
34
|
+
};
|
|
35
|
+
export type Filter = {
|
|
36
|
+
rooms?: readonly string[];
|
|
37
|
+
types?: readonly string[];
|
|
38
|
+
where?: Where;
|
|
39
|
+
pathPrefix?: string;
|
|
40
|
+
hop?: Related & {
|
|
41
|
+
field: string;
|
|
42
|
+
};
|
|
43
|
+
backlinks?: Related & {
|
|
44
|
+
field?: string;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
export type Key = 'room' | 'path' | 'type' | {
|
|
48
|
+
field: string;
|
|
49
|
+
};
|
|
50
|
+
export type Select = 'all' | {
|
|
51
|
+
fields?: 'all' | readonly string[];
|
|
52
|
+
sections?: 'all' | readonly string[];
|
|
53
|
+
preamble?: true;
|
|
54
|
+
markdown?: true;
|
|
55
|
+
backlinks?: true;
|
|
56
|
+
change?: true;
|
|
57
|
+
};
|
|
58
|
+
export type OrderOptions = {
|
|
59
|
+
nulls?: 'first' | 'last';
|
|
60
|
+
stringSort?: 'lexical' | 'locale';
|
|
61
|
+
locale?: string;
|
|
62
|
+
localeOptions?: Readonly<Record<string, unknown>>;
|
|
63
|
+
};
|
|
64
|
+
export type Direction = 'asc' | 'desc';
|
|
65
|
+
export type DocumentQuery = Filter & {
|
|
66
|
+
select: Select;
|
|
67
|
+
orderBy?: readonly ({
|
|
68
|
+
by: Key;
|
|
69
|
+
direction?: Direction;
|
|
70
|
+
} & OrderOptions)[];
|
|
71
|
+
limit?: number;
|
|
72
|
+
};
|
|
73
|
+
export type GroupQuery = Filter & {
|
|
74
|
+
groupBy: readonly Exclude<Key, 'path'>[];
|
|
75
|
+
orderBy?: readonly {
|
|
76
|
+
by: 'count' | Exclude<Key, 'path'>;
|
|
77
|
+
direction?: Direction;
|
|
78
|
+
}[];
|
|
79
|
+
limit?: number;
|
|
80
|
+
};
|
|
81
|
+
export type LocalQuery = DocumentQuery | GroupQuery;
|
|
82
|
+
export type Backlink = {
|
|
83
|
+
path: string;
|
|
84
|
+
type: string;
|
|
85
|
+
field: string;
|
|
86
|
+
};
|
|
87
|
+
export type QueryDocument = {
|
|
5
88
|
room: string;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
89
|
+
path: string;
|
|
90
|
+
type?: string;
|
|
91
|
+
fields?: Readonly<Record<string, unknown>>;
|
|
92
|
+
sections?: Readonly<Record<string, string>>;
|
|
93
|
+
preamble?: string;
|
|
94
|
+
markdown?: string;
|
|
95
|
+
backlinks?: readonly Backlink[];
|
|
96
|
+
change?: HeadChange | null;
|
|
97
|
+
binaryFile?: BinaryFileRecord;
|
|
98
|
+
};
|
|
99
|
+
export type QueryGroup = {
|
|
100
|
+
key: readonly unknown[];
|
|
101
|
+
count: number;
|
|
102
|
+
};
|
|
103
|
+
export type DocumentResult = {
|
|
104
|
+
documents: readonly QueryDocument[];
|
|
105
|
+
};
|
|
106
|
+
export type GroupResult = {
|
|
107
|
+
groups: readonly QueryGroup[];
|
|
108
|
+
};
|
|
109
|
+
export type QueryResult = DocumentResult | GroupResult;
|
|
110
|
+
export type QueryErrorCode = 'invalid-query' | 'unknown-type' | 'unknown-field' | 'wrong-kind';
|
|
111
|
+
export type RoomFacts = {
|
|
112
|
+
locator: string;
|
|
113
|
+
available: boolean;
|
|
114
|
+
types: readonly Definition[];
|
|
115
|
+
};
|
|
116
|
+
export type HeldRooms = {
|
|
117
|
+
listed: boolean;
|
|
118
|
+
rooms: readonly RoomFacts[];
|
|
119
|
+
};
|
|
120
|
+
export type Test = {
|
|
121
|
+
op: 'eq';
|
|
122
|
+
value: Value;
|
|
123
|
+
} | {
|
|
124
|
+
op: 'ne';
|
|
125
|
+
value: Value;
|
|
126
|
+
} | {
|
|
127
|
+
op: 'in';
|
|
128
|
+
values: readonly Value[];
|
|
129
|
+
} | {
|
|
130
|
+
op: 'nin';
|
|
131
|
+
values: readonly Value[];
|
|
132
|
+
} | {
|
|
133
|
+
op: 'range';
|
|
134
|
+
bounds: readonly (readonly ['gt' | 'gte' | 'lt' | 'lte', Value])[];
|
|
135
|
+
} | {
|
|
136
|
+
op: 'all';
|
|
137
|
+
values: readonly Value[];
|
|
138
|
+
} | {
|
|
139
|
+
op: 'size';
|
|
140
|
+
size: number;
|
|
141
|
+
} | {
|
|
142
|
+
op: 'exists';
|
|
143
|
+
exists: boolean;
|
|
144
|
+
};
|
|
145
|
+
export type Condition = {
|
|
146
|
+
every: readonly Condition[];
|
|
147
|
+
} | {
|
|
148
|
+
some: readonly Condition[];
|
|
149
|
+
} | {
|
|
150
|
+
field: string;
|
|
151
|
+
test: Test;
|
|
152
|
+
};
|
|
153
|
+
export type Scope = {
|
|
154
|
+
types: readonly string[] | null;
|
|
155
|
+
where: Condition | null;
|
|
156
|
+
pathPrefix: string | null;
|
|
157
|
+
};
|
|
158
|
+
export type KeyPlan = {
|
|
159
|
+
of: 'room';
|
|
160
|
+
} | {
|
|
161
|
+
of: 'path';
|
|
162
|
+
} | {
|
|
163
|
+
of: 'type';
|
|
164
|
+
} | {
|
|
165
|
+
of: 'field';
|
|
166
|
+
field: string;
|
|
167
|
+
};
|
|
168
|
+
export type DocumentShape = {
|
|
169
|
+
kind: 'documents';
|
|
170
|
+
fields: 'all' | readonly string[] | null;
|
|
171
|
+
sections: 'all' | readonly string[] | null;
|
|
172
|
+
preamble: boolean;
|
|
173
|
+
markdown: boolean;
|
|
174
|
+
backlinks: boolean;
|
|
175
|
+
change: boolean;
|
|
176
|
+
orderBy: readonly {
|
|
177
|
+
key: KeyPlan;
|
|
178
|
+
options: OrderOptions & {
|
|
179
|
+
direction: Direction;
|
|
180
|
+
};
|
|
181
|
+
}[];
|
|
182
|
+
};
|
|
183
|
+
export type GroupShape = {
|
|
184
|
+
kind: 'groups';
|
|
185
|
+
groupBy: readonly KeyPlan[];
|
|
186
|
+
orderBy: readonly {
|
|
187
|
+
by: 'count' | number;
|
|
188
|
+
direction: Direction;
|
|
189
|
+
}[];
|
|
190
|
+
};
|
|
191
|
+
export type PlanReach = {
|
|
192
|
+
rooms: readonly string[];
|
|
193
|
+
documents: readonly string[];
|
|
194
|
+
};
|
|
195
|
+
export type Plan = {
|
|
196
|
+
rooms: readonly string[] | null;
|
|
197
|
+
reach: PlanReach | null;
|
|
198
|
+
root: Scope;
|
|
199
|
+
hop: (Scope & {
|
|
200
|
+
field: string;
|
|
201
|
+
}) | null;
|
|
202
|
+
backlinks: (Scope & {
|
|
203
|
+
field: string | null;
|
|
204
|
+
}) | null;
|
|
205
|
+
shape: DocumentShape | GroupShape;
|
|
206
|
+
limit: number | null;
|
|
10
207
|
};
|
|
11
|
-
export
|
|
12
|
-
|
|
208
|
+
export declare class QueryError extends Error {
|
|
209
|
+
readonly code: QueryErrorCode;
|
|
210
|
+
readonly retryable = false;
|
|
211
|
+
constructor(code: QueryErrorCode, at: string, problem: string);
|
|
212
|
+
}
|
|
213
|
+
type Entries = Readonly<Record<string, unknown>>;
|
|
214
|
+
export declare function invalid(at: string, problem: string): never;
|
|
215
|
+
export declare function plain(value: unknown): value is Entries;
|
|
216
|
+
export declare function known(value: Entries, allowed: readonly string[], at: string): void;
|
|
217
|
+
export declare function planOf(input: unknown, facts: HeldRooms, reach?: PlanReach | null): Plan;
|
|
218
|
+
export declare function limitOf(input: unknown): number | null;
|
|
219
|
+
export declare function filterOf(input: unknown, facts: HeldRooms, reach?: PlanReach | null): Plan;
|
|
220
|
+
export declare function identityOf(plan: Plan): string;
|
|
221
|
+
export {};
|
|
13
222
|
//# sourceMappingURL=query.d.ts.map
|
package/dist/query.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
|