@agentshouse/mdruntime 0.1.0-cc7bd7a53214e → 0.1.0-cd3486bd400ed
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 +106 -31
- package/README.md +11 -10
- package/dist/adapter.d.ts +65 -28
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +1 -9
- 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 +57 -0
- package/dist/bootstrap.d.ts +20 -6
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +89 -35
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +13 -7
- package/dist/change.d.ts +4 -0
- package/dist/change.d.ts.map +1 -1
- 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/messages.d.ts +21 -0
- package/dist/chat/messages.d.ts.map +1 -0
- package/dist/chat/messages.js +151 -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 +57 -0
- package/dist/chat/provider.d.ts.map +1 -0
- package/dist/chat/provider.js +637 -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.d.ts +7 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +2 -0
- package/dist/client.d.ts +11 -7
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +58 -25
- package/dist/collection.d.ts +6 -11
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +56 -19
- package/dist/connection.d.ts +18 -13
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +679 -568
- package/dist/conversation.d.ts +27 -8
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +210 -81
- 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/host.d.ts +1 -0
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +8 -19
- package/dist/identity.d.ts +2 -0
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +10 -1
- package/dist/index.d.ts +7 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/memory.d.ts +12 -5
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +108 -36
- package/dist/model.d.ts +13 -12
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +6 -3
- 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 +22 -3
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +35 -1
- package/dist/overlay.d.ts +1 -1
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +19 -15
- package/dist/paths.d.ts +0 -1
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +0 -16
- package/dist/query.d.ts +3 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +74 -33
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +29 -35
- 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.map +1 -1
- package/dist/read-side.js +102 -46
- package/dist/refresh.d.ts +12 -1
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +35 -22
- package/dist/replica.d.ts +6 -6
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +53 -39
- package/dist/room-draft.d.ts +8 -8
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +13 -22
- package/dist/rows.d.ts +4 -1
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +82 -39
- package/dist/save.d.ts +4 -3
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +127 -68
- package/dist/search.d.ts +3 -2
- package/dist/search.d.ts.map +1 -1
- package/dist/status.d.ts +2 -2
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +0 -8
- package/dist/store.d.ts +26 -2
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +206 -90
- package/dist/wire.d.ts +6 -15
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +14 -17
- package/package.json +14 -2
package/dist/save.js
CHANGED
|
@@ -1,35 +1,49 @@
|
|
|
1
1
|
import { definitionOf } from './model.js';
|
|
2
|
-
import { apply, links, parse, retarget, serialize, target, } from '@agentshouse/mdmodel';
|
|
2
|
+
import { apply, ATTACHMENT, links, parse, pointerSegments, references, relative, relativize, retarget, serialize, target, } from '@agentshouse/mdmodel';
|
|
3
3
|
import { immutable, } from './change.js';
|
|
4
|
-
import {
|
|
4
|
+
import { collectionOf, documentsOf, governing, validateCollection, } from './collection.js';
|
|
5
5
|
import { changeBatchIdentity } from './identity.js';
|
|
6
6
|
import { overlay } from './overlay.js';
|
|
7
|
-
import { covered, normalize
|
|
8
|
-
function refuse(
|
|
7
|
+
import { covered, normalize } from './paths.js';
|
|
8
|
+
function refuse(code, file, location) {
|
|
9
9
|
return {
|
|
10
10
|
kind: 'refused',
|
|
11
11
|
refusal: {
|
|
12
|
-
|
|
12
|
+
code,
|
|
13
|
+
retryable: false,
|
|
13
14
|
...(file === undefined ? {} : { file }),
|
|
14
15
|
...(location === undefined ? {} : { location }),
|
|
15
16
|
},
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
|
-
function
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
function repointed(document, definition, from, to, moves, settled) {
|
|
20
|
+
const parsed = parse(document.content, from);
|
|
21
|
+
if (!parsed.ok)
|
|
22
|
+
return [];
|
|
23
|
+
let next = parsed.document;
|
|
24
|
+
const names = new Set();
|
|
25
|
+
for (const { pointer, value } of definition === undefined
|
|
26
|
+
? []
|
|
27
|
+
: references(document, definition)) {
|
|
28
|
+
const [name = ''] = pointerSegments(pointer);
|
|
29
|
+
const named = target(from, value);
|
|
30
|
+
if (named === null || settled.has(`${from} ${name}`))
|
|
31
|
+
continue;
|
|
32
|
+
const destination = moves.get(named) ?? named;
|
|
33
|
+
if (target(to, value) === destination)
|
|
34
|
+
continue;
|
|
35
|
+
const applied = apply(next, {
|
|
36
|
+
kind: 'reference',
|
|
37
|
+
pointer,
|
|
38
|
+
value: retarget(value, relative(to, destination)),
|
|
39
|
+
prior: value,
|
|
40
|
+
});
|
|
41
|
+
if (applied.outcome !== 'applied')
|
|
42
|
+
continue;
|
|
43
|
+
next = applied.document;
|
|
44
|
+
names.add(name);
|
|
25
45
|
}
|
|
26
|
-
|
|
27
|
-
return undefined;
|
|
28
|
-
const named = target(from, value);
|
|
29
|
-
if (named === null)
|
|
30
|
-
return undefined;
|
|
31
|
-
const destination = moves.get(named) ?? named;
|
|
32
|
-
return target(to, value) === destination ? undefined : retarget(value, relative(to, destination));
|
|
46
|
+
return [...names].map((name) => ({ kind: 'field', path: from, name, value: next.fields[name] }));
|
|
33
47
|
}
|
|
34
48
|
function edited(document, path, changes) {
|
|
35
49
|
let next = document;
|
|
@@ -77,7 +91,8 @@ function relinks(path, moved, before, moves) {
|
|
|
77
91
|
return {
|
|
78
92
|
kind: 'refused',
|
|
79
93
|
refusal: {
|
|
80
|
-
|
|
94
|
+
code: applied.refusal.rule,
|
|
95
|
+
retryable: false,
|
|
81
96
|
file: path,
|
|
82
97
|
...(applied.refusal.location === undefined ? {} : { location: applied.refusal.location }),
|
|
83
98
|
},
|
|
@@ -117,19 +132,12 @@ function rewrites(changes, visible) {
|
|
|
117
132
|
return { kind: 'changes', changes };
|
|
118
133
|
const merged = [...changes];
|
|
119
134
|
const added = [];
|
|
120
|
-
for (const [path, document] of
|
|
135
|
+
for (const [path, document] of documentsOf(visible.collection)) {
|
|
121
136
|
if (settled.has(path))
|
|
122
137
|
continue;
|
|
123
138
|
const moved = moves.get(path) ?? path;
|
|
124
139
|
const definition = definitionOf(governing(visible.collection.composition, path), document.type);
|
|
125
|
-
|
|
126
|
-
if (!referenceField(spec) || settled.has(`${path} ${name}`))
|
|
127
|
-
continue;
|
|
128
|
-
const value = repointed(document.fields[name], path, moved, moves);
|
|
129
|
-
if (value === undefined)
|
|
130
|
-
continue;
|
|
131
|
-
added.push({ kind: 'field', path, name, value });
|
|
132
|
-
}
|
|
140
|
+
added.push(...repointed(document, definition, path, moved, moves, settled));
|
|
133
141
|
const relinked = relinks(path, moved, edited(document, path, merged), moves);
|
|
134
142
|
if (relinked.kind === 'refused')
|
|
135
143
|
return relinked;
|
|
@@ -166,18 +174,6 @@ export function providerRewritten(batch, visible) {
|
|
|
166
174
|
...anticipated(batch.changes, batch.preconditions, rewritten.changes, visible),
|
|
167
175
|
};
|
|
168
176
|
}
|
|
169
|
-
function targets(value, from) {
|
|
170
|
-
const values = Array.isArray(value) ? value : [value];
|
|
171
|
-
const resolved = [];
|
|
172
|
-
for (const item of values) {
|
|
173
|
-
if (typeof item !== 'string')
|
|
174
|
-
continue;
|
|
175
|
-
const named = target(from, item);
|
|
176
|
-
if (named !== null)
|
|
177
|
-
resolved.push(named);
|
|
178
|
-
}
|
|
179
|
-
return resolved;
|
|
180
|
-
}
|
|
181
177
|
function incoming(collection, removed) {
|
|
182
178
|
const found = new Map();
|
|
183
179
|
const note = (target, file) => {
|
|
@@ -187,16 +183,15 @@ function incoming(collection, removed) {
|
|
|
187
183
|
referrers.add(file);
|
|
188
184
|
found.set(target, referrers);
|
|
189
185
|
};
|
|
190
|
-
for (const [path, document] of
|
|
186
|
+
for (const [path, document] of documentsOf(collection)) {
|
|
191
187
|
const definition = definitionOf(governing(collection.composition, path), document.type);
|
|
192
|
-
for (const
|
|
193
|
-
if (
|
|
188
|
+
for (const { value, to } of definition === undefined ? [] : references(document, definition)) {
|
|
189
|
+
if (to.includes(ATTACHMENT))
|
|
194
190
|
continue;
|
|
195
|
-
|
|
191
|
+
const named = target(path, value);
|
|
192
|
+
if (named !== null)
|
|
196
193
|
note(named, path);
|
|
197
194
|
}
|
|
198
|
-
for (const link of links(document, path))
|
|
199
|
-
note(link.target, path);
|
|
200
195
|
}
|
|
201
196
|
const [first] = [...found.keys()].sort();
|
|
202
197
|
if (first === undefined)
|
|
@@ -207,7 +202,12 @@ function incoming(collection, removed) {
|
|
|
207
202
|
every.add(file);
|
|
208
203
|
return {
|
|
209
204
|
kind: 'refused',
|
|
210
|
-
refusal: {
|
|
205
|
+
refusal: {
|
|
206
|
+
code: 'referenced-missing-file',
|
|
207
|
+
retryable: false,
|
|
208
|
+
file: first,
|
|
209
|
+
referrers: [...every].sort(),
|
|
210
|
+
},
|
|
211
211
|
};
|
|
212
212
|
}
|
|
213
213
|
function affected(change) {
|
|
@@ -227,7 +227,7 @@ function guard(changes, input) {
|
|
|
227
227
|
return refuse('provider-owned-path', normalized);
|
|
228
228
|
}
|
|
229
229
|
const operation = change.kind === 'remove' ? 'delete' : 'write';
|
|
230
|
-
if (!covered(input.operations[operation], normalized))
|
|
230
|
+
if (!input.local && !covered(input.operations[operation], normalized))
|
|
231
231
|
return refuse(`${operation}-grant`, normalized);
|
|
232
232
|
}
|
|
233
233
|
if (change.kind === 'create') {
|
|
@@ -241,7 +241,7 @@ function guard(changes, input) {
|
|
|
241
241
|
return refuse('path-absent', change.path);
|
|
242
242
|
if (existing.has(change.to))
|
|
243
243
|
return refuse('path-collision', change.to);
|
|
244
|
-
if (unrevisionedDocument(input.visible, change.path)) {
|
|
244
|
+
if (!input.local && unrevisionedDocument(input.visible, change.path)) {
|
|
245
245
|
return refuse('unknown-revision', change.path);
|
|
246
246
|
}
|
|
247
247
|
existing.delete(change.path);
|
|
@@ -251,19 +251,19 @@ function guard(changes, input) {
|
|
|
251
251
|
if (!existing.has(change.path))
|
|
252
252
|
return refuse('path-absent', change.path);
|
|
253
253
|
if (change.kind === 'remove') {
|
|
254
|
-
if (unrevisionedDocument(input.visible, change.path)) {
|
|
254
|
+
if (!input.local && unrevisionedDocument(input.visible, change.path)) {
|
|
255
255
|
return refuse('unknown-revision', change.path);
|
|
256
256
|
}
|
|
257
257
|
existing.delete(change.path);
|
|
258
258
|
continue;
|
|
259
259
|
}
|
|
260
260
|
if (change.kind === 'replace') {
|
|
261
|
-
if (input.visible.revisions[change.path] === undefined) {
|
|
261
|
+
if (!input.local && input.visible.revisions[change.path] === undefined) {
|
|
262
262
|
return refuse('unknown-revision', change.path);
|
|
263
263
|
}
|
|
264
264
|
continue;
|
|
265
265
|
}
|
|
266
|
-
if (input.visible.collection.
|
|
266
|
+
if (input.visible.collection.document(change.path) === undefined) {
|
|
267
267
|
return refuse('path-absent', change.path);
|
|
268
268
|
}
|
|
269
269
|
}
|
|
@@ -274,7 +274,10 @@ function unrevisionedDocument(visible, path) {
|
|
|
274
274
|
}
|
|
275
275
|
function existence(visible, path) {
|
|
276
276
|
const revision = visible.revisions[path];
|
|
277
|
-
|
|
277
|
+
if (revision !== undefined)
|
|
278
|
+
return { kind: 'revision', path, revision };
|
|
279
|
+
const content = visible.documents[path];
|
|
280
|
+
return content === undefined ? { kind: 'present', path } : { kind: 'content', path, content };
|
|
278
281
|
}
|
|
279
282
|
function sameTarget(precondition, change) {
|
|
280
283
|
if (precondition.kind !== change.kind || precondition.path !== change.path)
|
|
@@ -300,7 +303,7 @@ function preconditionsOf(changes, visible, bases) {
|
|
|
300
303
|
add(based);
|
|
301
304
|
continue;
|
|
302
305
|
}
|
|
303
|
-
const document = visible.collection.
|
|
306
|
+
const document = visible.collection.document(change.path);
|
|
304
307
|
if (change.kind === 'field') {
|
|
305
308
|
add({
|
|
306
309
|
kind: 'field',
|
|
@@ -368,32 +371,87 @@ function exceeded(limits, changes, resulting) {
|
|
|
368
371
|
}
|
|
369
372
|
return null;
|
|
370
373
|
}
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
374
|
+
function shellRelative(text, path, handle, definition) {
|
|
375
|
+
if (!text.includes(`/rooms/${handle}/`))
|
|
376
|
+
return null;
|
|
377
|
+
const parsed = parse(text, path);
|
|
378
|
+
if (!parsed.ok)
|
|
379
|
+
return null;
|
|
380
|
+
const result = relativize(parsed.document, path, handle, definition(parsed.document.type));
|
|
381
|
+
return result.outcome === 'applied' && result.document.content !== text ? result.document : null;
|
|
382
|
+
}
|
|
383
|
+
function relativeField(path, name, value, handle, definition) {
|
|
384
|
+
const opened = parse('---\n---\n');
|
|
385
|
+
if (definition === undefined ||
|
|
386
|
+
!opened.ok ||
|
|
387
|
+
!JSON.stringify(value ?? null).includes(`/rooms/${handle}/`))
|
|
388
|
+
return value;
|
|
389
|
+
const held = apply(opened.document, { kind: 'field', name, value, prior: undefined });
|
|
390
|
+
if (held.outcome !== 'applied')
|
|
391
|
+
return value;
|
|
392
|
+
const result = relativize(held.document, path, handle, definition);
|
|
393
|
+
return result.outcome === 'applied' ? result.document.fields[name] : value;
|
|
394
|
+
}
|
|
395
|
+
function relativeChanges(input) {
|
|
396
|
+
const { handle, composition, visible } = input;
|
|
397
|
+
const typed = (path) => (type) => definitionOf(governing(composition, path), type);
|
|
398
|
+
const body = (path, text) => shellRelative(text, path, handle, () => undefined)?.content ?? text;
|
|
399
|
+
return input.changes.map((change) => {
|
|
400
|
+
const definition = typed(change.path);
|
|
401
|
+
if (change.kind === 'field') {
|
|
402
|
+
const type = visible.collection.document(change.path)?.type;
|
|
403
|
+
const value = relativeField(change.path, change.name, change.value, handle, definition(type));
|
|
404
|
+
return value === change.value ? change : { ...change, value };
|
|
405
|
+
}
|
|
406
|
+
if (change.kind === 'section' || change.kind === 'preamble') {
|
|
407
|
+
const value = body(change.path, change.value);
|
|
408
|
+
return value === change.value ? change : { ...change, value };
|
|
409
|
+
}
|
|
410
|
+
if (change.kind === 'replace' || (change.kind === 'create' && 'content' in change)) {
|
|
411
|
+
const content = shellRelative(change.content, change.path, handle, definition)?.content ?? change.content;
|
|
412
|
+
return content === change.content ? change : { ...change, content };
|
|
413
|
+
}
|
|
414
|
+
if (change.kind !== 'create')
|
|
415
|
+
return change;
|
|
416
|
+
const type = typeof change.fields.type === 'string' ? change.fields.type : undefined;
|
|
417
|
+
const fields = Object.fromEntries(Object.entries(change.fields).map(([name, value]) => [
|
|
418
|
+
name,
|
|
419
|
+
relativeField(change.path, name, value, handle, definition(type)),
|
|
420
|
+
]));
|
|
421
|
+
const sections = Object.fromEntries(Object.entries(change.sections).map(([name, value]) => [name, body(change.path, value)]));
|
|
422
|
+
return { ...change, fields, sections };
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
function unmodeledType(collection, composition) {
|
|
426
|
+
for (const [path, document] of documentsOf(collection)) {
|
|
427
|
+
if (document.type !== undefined &&
|
|
375
428
|
document.type !== 'any' &&
|
|
376
|
-
governing(
|
|
429
|
+
governing(composition, path).status === 'unavailable')
|
|
430
|
+
return true;
|
|
431
|
+
}
|
|
432
|
+
return false;
|
|
433
|
+
}
|
|
434
|
+
export function buildBatch(input) {
|
|
435
|
+
const changes = relativeChanges(input);
|
|
436
|
+
const structural = changes.find((change) => change.kind === 'move' || change.kind === 'remove');
|
|
437
|
+
if (structural !== undefined && unmodeledType(input.visible.collection, input.composition))
|
|
377
438
|
return refuse('model-unavailable', structural.path);
|
|
378
|
-
if (
|
|
439
|
+
if (changes.length === 0)
|
|
379
440
|
return refuse('no-change');
|
|
380
|
-
const rewritten = rewrites(
|
|
441
|
+
const rewritten = rewrites(changes, input.visible);
|
|
381
442
|
if (rewritten.kind === 'refused')
|
|
382
443
|
return rewritten;
|
|
383
|
-
const changes = input.rewriting === 'provider' ? input.changes : rewritten.changes;
|
|
384
444
|
const refusal = guard(changes, input);
|
|
385
445
|
if (refusal !== null)
|
|
386
446
|
return refusal;
|
|
387
447
|
const preconditions = preconditionsOf(changes, input.visible, input.bases);
|
|
388
|
-
const predicted = input.
|
|
389
|
-
? anticipated(changes, preconditions, rewritten.changes, input.visible)
|
|
390
|
-
: { changes, preconditions };
|
|
448
|
+
const predicted = anticipated(changes, preconditions, rewritten.changes, input.visible);
|
|
391
449
|
const resulting = overlay(input.visible, [
|
|
392
450
|
{ id: '', baseRoomVersion: input.baseRoomVersion, ...predicted },
|
|
393
451
|
]);
|
|
394
452
|
const removed = new Set(changes.filter((change) => change.kind === 'remove').map((change) => change.path));
|
|
395
453
|
if (removed.size > 0) {
|
|
396
|
-
const referenced = incoming(
|
|
454
|
+
const referenced = incoming(collectionOf(resulting.documents, input.composition), removed);
|
|
397
455
|
if (referenced !== null)
|
|
398
456
|
return referenced;
|
|
399
457
|
}
|
|
@@ -416,7 +474,8 @@ export function buildBatch(input) {
|
|
|
416
474
|
return {
|
|
417
475
|
kind: 'refused',
|
|
418
476
|
refusal: {
|
|
419
|
-
|
|
477
|
+
code: verdict.rule,
|
|
478
|
+
retryable: false,
|
|
420
479
|
file: verdict.file,
|
|
421
480
|
...(verdict.location === undefined ? {} : { location: verdict.location }),
|
|
422
481
|
...(verdict.referrers === undefined ? {} : { referrers: verdict.referrers }),
|
package/dist/search.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ChangeSet } from './change-set.js';
|
|
2
2
|
import { type Filter } from './query.js';
|
|
3
|
-
|
|
3
|
+
import type { Open } from './open.js';
|
|
4
|
+
export type DocumentPart = Open<'fields' | 'sections' | 'preamble' | 'path'>;
|
|
4
5
|
export type SearchRequest = {
|
|
5
6
|
text: string;
|
|
6
7
|
documents?: Filter;
|
|
@@ -18,7 +19,7 @@ export type MessageHit = {
|
|
|
18
19
|
conversation: string;
|
|
19
20
|
identity: string;
|
|
20
21
|
score: number;
|
|
21
|
-
matches: Readonly<Record<string, readonly 'text'[]>>;
|
|
22
|
+
matches: Readonly<Record<string, readonly Open<'text'>[]>>;
|
|
22
23
|
};
|
|
23
24
|
export type SearchResult = {
|
|
24
25
|
documents: readonly DocumentHit[];
|
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;AACjD,OAAO,EAAkC,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
|
package/dist/status.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Open } from './open.js';
|
|
1
2
|
import type { ReturnReason } from './room-draft.js';
|
|
2
3
|
export type AttentionEntry = {
|
|
3
4
|
room: string;
|
|
@@ -5,7 +6,7 @@ export type AttentionEntry = {
|
|
|
5
6
|
returned: ReturnReason;
|
|
6
7
|
};
|
|
7
8
|
export type SyncStatus = {
|
|
8
|
-
state: 'pending' | 'syncing' | 'synced'
|
|
9
|
+
state: Open<'pending' | 'syncing' | 'synced'>;
|
|
9
10
|
lastCompleted: string | null;
|
|
10
11
|
providerUnreachable: boolean;
|
|
11
12
|
attentionRequired: readonly AttentionEntry[];
|
|
@@ -17,7 +18,6 @@ export type CycleProgress = {
|
|
|
17
18
|
};
|
|
18
19
|
export declare const STARTING: SyncStatus;
|
|
19
20
|
export declare function transferring(status: SyncStatus): SyncStatus;
|
|
20
|
-
export declare function settled(status: SyncStatus, progress: CycleProgress, at: string | null, queued: boolean, attention: Pick<SyncStatus, 'attentionRequired' | 'reset'>): SyncStatus;
|
|
21
21
|
export declare function saving(status: SyncStatus): SyncStatus;
|
|
22
22
|
export declare function same(one: SyncStatus, other: SyncStatus): boolean;
|
|
23
23
|
//# sourceMappingURL=status.d.ts.map
|
package/dist/status.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,IAAI,CAAC,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;IAC9C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,SAAS,cAAc,EAAE,CAAC;IAC7C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,UAMtB,CAAC;AAEF,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE3D;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAErD;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAQhE"}
|
package/dist/status.js
CHANGED
|
@@ -8,14 +8,6 @@ export const STARTING = {
|
|
|
8
8
|
export function transferring(status) {
|
|
9
9
|
return { ...status, state: 'syncing' };
|
|
10
10
|
}
|
|
11
|
-
export function settled(status, progress, at, queued, attention) {
|
|
12
|
-
return {
|
|
13
|
-
state: queued ? 'pending' : progress.complete ? 'synced' : status.state,
|
|
14
|
-
lastCompleted: progress.complete ? at : status.lastCompleted,
|
|
15
|
-
providerUnreachable: !progress.reachable,
|
|
16
|
-
...attention,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
11
|
export function saving(status) {
|
|
20
12
|
return { ...status, state: 'pending' };
|
|
21
13
|
}
|
package/dist/store.d.ts
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
import type { ModelState } from './model.js';
|
|
2
|
-
import type { Capability, HeadChange, OperationScopes, ProviderLimit, ReplicaAdmission, RoomAttachment, TypedSelection } from './adapter.js';
|
|
2
|
+
import type { Capability, HeadChange, Member, OperationScopes, ProviderLimit, ReplicaAdmission, RoomAttachment, TypedSelection } from './adapter.js';
|
|
3
3
|
import type { AcceptedMessage } from './adapter.js';
|
|
4
4
|
import type { ChangeBatch } from './change.js';
|
|
5
5
|
import type { ChatDraftFile } from './file.js';
|
|
6
6
|
import type { Submission } from './outcome.js';
|
|
7
7
|
import type { RoomDraftRecord, SavedDraft } from './room-draft.js';
|
|
8
|
+
export declare const STORE_SCHEMA = 21;
|
|
8
9
|
export type ReplicaRecord = {
|
|
9
10
|
locator: string;
|
|
10
11
|
name: string;
|
|
12
|
+
handle: string;
|
|
11
13
|
operations: OperationScopes;
|
|
12
14
|
replica: ReplicaAdmission;
|
|
13
15
|
model: ModelState;
|
|
14
|
-
attachedModel: import('./model.js').ModelIdentity | null;
|
|
15
16
|
typedSelection: TypedSelection | null;
|
|
16
17
|
selectionModel: ModelState;
|
|
17
18
|
providerOwnedPaths: readonly string[];
|
|
18
19
|
roomVersion: string;
|
|
20
|
+
transfer: string;
|
|
19
21
|
documents: Readonly<Record<string, string>>;
|
|
20
22
|
binaryTargets: readonly string[];
|
|
21
23
|
revisions: Readonly<Record<string, string>>;
|
|
@@ -23,6 +25,20 @@ export type ReplicaRecord = {
|
|
|
23
25
|
written: Readonly<Record<string, string>>;
|
|
24
26
|
attachments: readonly RoomAttachment[];
|
|
25
27
|
};
|
|
28
|
+
export type StagedLayer = Pick<ReplicaRecord, 'documents' | 'binaryTargets' | 'revisions' | 'changes' | 'written'>;
|
|
29
|
+
export type TransferRecord = {
|
|
30
|
+
locator: string;
|
|
31
|
+
transfer: string;
|
|
32
|
+
selection: string;
|
|
33
|
+
from: string;
|
|
34
|
+
last: string;
|
|
35
|
+
pageToken: string | null;
|
|
36
|
+
models: {
|
|
37
|
+
collection: ModelState;
|
|
38
|
+
selection: ModelState;
|
|
39
|
+
};
|
|
40
|
+
attachments: readonly (readonly RoomAttachment[])[];
|
|
41
|
+
};
|
|
26
42
|
export type PendingState = {
|
|
27
43
|
readonly drafts: readonly SavedDraft[];
|
|
28
44
|
readonly submission: Submission;
|
|
@@ -57,10 +73,12 @@ export type ChatDraftRecord = {
|
|
|
57
73
|
text: string;
|
|
58
74
|
files: readonly ChatDraftFile[];
|
|
59
75
|
turn: string | null;
|
|
76
|
+
revision: string;
|
|
60
77
|
};
|
|
61
78
|
export type RecordWrite = {
|
|
62
79
|
next: ReplicaRecord;
|
|
63
80
|
previous: ReplicaRecord | null;
|
|
81
|
+
stored?: StagedLayer;
|
|
64
82
|
queue: readonly ChangeBatch[];
|
|
65
83
|
previousQueue?: readonly ChangeBatch[];
|
|
66
84
|
saved?: readonly SavedDraft[];
|
|
@@ -79,6 +97,8 @@ export type RuntimeStore = {
|
|
|
79
97
|
providerLimits(): Promise<readonly ProviderLimit[]>;
|
|
80
98
|
capabilities(): Promise<readonly Capability[]>;
|
|
81
99
|
declare(limits: readonly ProviderLimit[], capabilities: readonly Capability[]): Promise<void>;
|
|
100
|
+
member(): Promise<Member | null>;
|
|
101
|
+
keepMember(member: Member | null): Promise<void>;
|
|
82
102
|
queues(): Promise<readonly QueueRecord[]>;
|
|
83
103
|
submit(locator: string, id: string, submission: Submission, lost: boolean): Promise<void>;
|
|
84
104
|
accept(locator: string, id: string, roomVersion: string): Promise<void>;
|
|
@@ -95,6 +115,10 @@ export type RuntimeStore = {
|
|
|
95
115
|
keepRoomDraft(record: RoomDraftRecord): Promise<void>;
|
|
96
116
|
discardRoomDraft(locator: string, path: string): Promise<void>;
|
|
97
117
|
dropRooms(locators: readonly string[]): Promise<void>;
|
|
118
|
+
transfers(): Promise<readonly TransferRecord[]>;
|
|
119
|
+
staged(record: TransferRecord): Promise<StagedLayer>;
|
|
120
|
+
stage(record: TransferRecord, page: StagedLayer): Promise<void>;
|
|
121
|
+
abandon(locator: string): Promise<void>;
|
|
98
122
|
generation(): Promise<string | null>;
|
|
99
123
|
rememberGeneration(value: string): Promise<void>;
|
|
100
124
|
close(): void;
|
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,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,cAAc,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|